问题标签 [lifetime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
938 浏览

android - 服务寿命问题

我目前有一个产生的线程,要么将下一个命令从队列中拉出并执行它,要么休眠一会儿,然后再试一次。但是,如果队列中没有更多命令并且应用程序中没有更多活动的活动,我不希望它运行。

我的问题是我应该调查什么路线,其他人可能会采取哪些路线?

  1. 重构服务以仅在命令进入时处理它们,而不是产生线程
  2. 在我的线程中有第三个条件(如果!activityCount = 0 停止线程)

或者,如果没有更多活动绑定到它,android 可以自动终止我的线程吗?

0 投票
2 回答
2728 浏览

c++ - 完整表达边界和临时对象的生命周期

可能重复:
C++:临时参数的寿命?

据说临时变量在评估完整表达式的最后一步被销毁,例如

临时指针一直存在到 bar 返回,但是对于

它是否仍然存在,直到 bar 返回,或者 baz return 意味着这里的完整表达式结束,我在 baz 返回后检查了 destruct objects 的编译器,但我可以依赖它吗?

0 投票
2 回答
10947 浏览

session - 使用 express 和 MongoDB 在 node.js 中的会话生命周期

我正在使用带有 express 框架的 node.js。作为会话存储,我使用的是 MongoDB。如何设置从 MongoDB 中删除会话对象的生命周期。这就是我做声明的方式:

0 投票
2 回答
529 浏览

c++ - 临时绑定到聚合初始化结构成员的生命周期

给定以下代码:

输出是:

C++0x 有一个子句规定这可以在用作新的初始化程序时创建悬空引用,但它没有说明(至少我找不到任何东西)关于 const 临时引用的聚合初始化。

那么这是未指定的行为吗?

0 投票
1 回答
2060 浏览

lucene.net - Lucene.NET 生命周期管理

假设我对添加和搜索文档有基本的了解。

管理 IndexWriter 和 IndexReader 实例的最佳实践是什么?

目前,我的应用程序创建了一个 IndexWriter 的单例实例。当我需要进行搜索时,我只需使用以下方法从 IndexWriter 创建一个 IndexSearcher

我这样做是因为创建一个新的 IndexReader 会导致索引被加载到内存中,然后等待 GC 重新分配内存。这导致内存不足错误。

这个当前的实现是否被认为是理想的?这个实现解决了内存问题,但是 write.lock 文件总是存在的问题(因为 IndexWriter 总是被实例化并打开)。这是我在应用程序中遇到的错误的堆栈跟踪。

锁定获取超时:NativeFSLock@C:\inetpub\wwwroot\htdocs_beta\App_Data\products3\write.lock: System.IO.IOException: The process cannot access the file 'C:\inetpub\wwwroot\htdocs_beta\App_Data\products3\ write.lock' 因为它正被另一个进程使用。在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 在 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs , String msgPath, Boolean bFromProxy, Boolean useLongPath) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access) at Lucene.Net.Store.NativeFSLock.Obtain()

我在想也许最好创建一个 IndexSearcher 的单例实例进行搜索,然后根据需要在内存中创建一个 IndexWriter。这样,在更新索引时将创建/删除 write.lock 文件。我看到的唯一问题是 IndexSearcher 实例将变得过时,如果索引已更新,我需要运行一个重新加载 IndexSearcher 的任务。

你怎么看?

您如何通过实时更新处理大型索引?

0 投票
3 回答
487 浏览

c# - CodeBehind 中的对象可以存活多久?

如果我在 .aspx 页面的代码隐藏中创建一个对象,我可以期望该对象存在多长时间?它会跨越回传吗?我可以以某种方式将它传递到另一个页面吗?我可以让它与会话对象一样长吗?

我在网上搜索了一份文档,解释了从代码隐藏创建的对象的生命周期,以及如何与这个生命周期进行交互;任何相关链接将不胜感激。

顺便说一句,我在代码隐藏中使用 C#,但我想大多数针对 VB 的建议也适用。

0 投票
1 回答
926 浏览

.net - .NET Remoting 对象生命周期

我写了这段代码:

InitializeLifetimeService 的覆盖是否在 2 秒后对象没有“收集垃圾”?我的意思是,不管这个实例是否被远程访问,都是独立的。

谢谢你。

0 投票
5 回答
383 浏览

c++ - 在 C++ 中避免别名(例如,将容器的元素添加到自身时)的“正确”方法是什么?

刚刚了解到上面的代码可能非常危险。

(如果不是很明显为什么,你并不孤单......这对我来说也不明显。)

我的问题:

  1. 处理它的“标准”方式是什么?制作一个新变量然后立即将其分配给某个东西对我来说似乎有点奇怪。有没有更好的处理方法?

  2. 你如何训练自己注意这样的混叠问题?你在寻找什么模式?我不知道承认这种情况;当我了解 C 中的关键字时,我才了解了别名restrict,直到现在我才了解问题的真正含义。


编辑:

我很乐意接受答案,但问题的第 (2) 部分似乎没有得到回答。我想知道人们使用什么策略来定位他们编写的代码中的别名错误。

到目前为止,我提出的一种策略是避免为两个参数传递相同的值。(在这种情况下,一个参数是隐式的,一个是显式的。)

还有其他容易注意和注意的事情吗?

0 投票
1 回答
631 浏览

objective-c - 目标c线程中的线程变量生命周期


我有一个 NSOperation 在我使用的 -main 方法中[NSThread detachNewThreadSelector:@selector(aMethod:) toTarget:self withObject:anArgument];

aObject(我的 NSOperation 子类的实例变量)是对在 -main 方法内返回的自动释放数组的对象的弱引用...

我知道 NSThread 的 detachNewThreadSelector 方法保留self和 withObject: anArgument,但是 aObject 会发生什么?是否确定在执行分离线程(aMethod:) 期间会存在?自我被保留detachNewThreadSelector,这是否意味着-主线程的池将被延迟释放,因为它被保留,因此clients将存在,因此aObject将存在?
或者-main(NSOperation)线程将在-aMethod(NSThread)完成之前完成执行并释放,所以在aObject那里使用不安全?

真正的问题是:当从线程内部调用[NSThread detachNewThreadSelector:@selector(aMethod:) ...toTarget:self ...]时,最后一个线程是否被保留,其自动释放的实例(clients数组)可以安全地在aMethod( self->aObject) 中使用(让我们说通过弱引用)?

0 投票
1 回答
383 浏览

c++ - 当一个数组由子表达式创建时,其中的临时变量会发生什么?

我正在阅读 FDIS (12.2p{4,5}) 的这两段:

在两种情况下,临时对象在与完整表达式结束时不同的点被销毁。第一个上下文是调用默认构造函数来初始化数组元素时。如果构造函数有一个或多个默认参数,则在默认参数中创建的每个临时变量的销毁将在构造下一个数组元素(如果有)之前进行排序。

第二个上下文是引用绑定到临时的。引用绑定到的临时对象或引用绑定到的子对象的完整对象的临时对象在引用的生命周期内持续存在,除非:[...]

  • 临时绑定到函数调用 (5.2.2) 中的引用参数将持续存在,直到包含调用的完整表达式完成。

这两个似乎与以下情况相矛盾

这个输出CDCD是第一个上下文CCDD所要求的,还是第二个上下文所要求的输出?GCC 似乎遵循第二个上下文描述和输出CCDD。我是否忽略了一些重要的事情?


编辑:我认为它不需要 C++0x。new我的问题也影响了这个表达式:

但在这种情况下,GCC 遵循第一个上下文,并输出CDCD.