问题标签 [resource-cleanup]
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.
c# - 关闭窗口时清理 ViewModel 中的所有项目
我已经RichBox
绑定到一个List<String>ListName
在使用窗口中我在这个列表中添加了一些项目,但是在我关闭这个窗口并打开它之后我仍然有旧的添加名称,我知道当我没有处理视图模型时关闭窗口,但我在关闭时使用它
但这只会清理Messenger
并让我的所有其他项目具有值,我想在关闭窗口时清除此 ViewModel 中的所有资源
更新 :
用鲁迪回答我试着关闭做
它可以工作,但我似乎不适合取消注册虚拟机并重新注册!
gdb - xemacs gdb cleanups.c:264: internal-error: restore_my_cleanups: Assertion '*pmy_chain == SENTINEL_CLEANUP' 失败
我尝试在 Xemacs 版本 21.4.21 上运行 GDB 版本 7.6.50.20130508-cvs(cygwin-special),但出现以下错误:
GDB 本身在 Cygwin 上运行良好。在 Cygwin 终端上,我做了:
获取可执行文件,并写了
接着
它工作得很好。然后我做了
而且版本竟然和xemacs使用的gdb一样,看来这个错误一定是gdb和xemacs的交互有关,而不是gdb的问题?
我发现有些人有相同或相似的问题:
http://old.nabble.com/-RFA--dangling-cleanup-in-find_frame_funname-td35521450.html
有任何想法吗?提前致谢!
另外,有谁知道 cleanups.c 文件在哪里?我什至找不到netrel文件夹(它肯定不在 Cygwin 的 / 文件夹中)。
java - 测试执行后junit不清理记录器
我正在为一些遗留代码创建一些 junit 测试。在这些类中,有许多对作为 java.util.logging.Logger 的自定义子类的记录器的调用。对于每次调用,处理记录器的类都会检查记录器是否已初始化,并使用 java.util.logging.LogManager 按名称检索记录器。我遇到的问题是,如果我连续运行两个测试用例,我会得到一个类转换异常。我调查了一段时间,发现当第二个测试运行时,LogManager 找到了 Logger 的现有实例,但是如果我调用logger instanceof MyLogging.class
该记录器,我会得到一个false
,如果我调用logger.getClass()
我会得到MyLogging.class
我的假设是 junit 没有清理两个测试之间的所有资源。记录器的一个实例保留在内存中,但不知何故它被强制转换为超类。
我试图@After
在我调用的方法中创建一个用 ,注释的 tearDown 方法LogManager.reset()
。它没有用,javadoc说这个方法删除了所有的处理程序,但它没有提到记录器,所以它似乎不是我需要的功能。我搜索了整个文档以找到删除记录器的方法,但我找不到任何东西。
我不知道它是否相关,但 5 个测试类中有 2 个注释为:@RunWith(PowerMockRunner.class)
任何关于如何正确清理资源或删除记录器的想法都非常感谢。
c++ - LoadLibrary - C++ 中的正确清理
我在 C++ Visual Studio 2012 中有这个小代码,用于从使用 cygwin 构建的 dll 文件中调用静态函数,下面的代码完全有效。问题是,有时它会在函数调用时崩溃,或者像往常一样将结果值输出到控制台,但 Visual Studio 中的调试器并没有前进。奇怪的行为。我想也许我退出应用程序后没有正确清理?我第一次加载 VS,它可以工作,但是在一些调试和崩溃之后,这开始发生。
three.js - 如何在页面刷新时清理 three.js(或 WebGL)
我们有一个相当广泛的 three.js 应用程序,使用了很多材质、场景、渲染缓冲区等。我们只能刷新/重新启动它几次,它会因几个问题之一而失败;所有这些都相当于耗尽了 WebGL 资源。
我在 window.onbeforeunload 上添加了一个清理例程,它在支持它的对象上调用 dispose() 方法;材质、渲染缓冲区和几何图形。我不相信我已经抓住了所有资源;但这似乎已经足够了,因为我已经能够每五秒刷新半个小时。
问题是:[1]触发此类清理的最佳方式是什么?window.onbeforeunload 似乎很有效,但也许有理由选择一些替代方案?
[2]执行此类清理的最佳方法是什么?在清理所有 WebGL 资源的渲染器上进行处置会很好。(我不关心 javascript 对象,因为浏览器似乎很有能力清理这些对象。)
我在这里看到了相关的问题;例如关于清理场景,但我对完整的清理感兴趣。我猜 WebGL 较低级别的任何答案都适用于这种全局清理;它可能不仅仅适用于一些 three.js 资源,因为它无法计算出这些较小清理的范围。
python - 解释器何时释放模块范围变量引用?
我正在尝试在我拥有的实用程序模块中实现清理例程。在四处寻找解决问题的方法时,我最终决定使用weakref
回调来进行清理。但是,我担心它不会按预期工作,因为在同一模块中对对象的强引用。为了显示:
foo_lib.py
其他类则参考foo_lib.foo
. 我确实从 1.5.1 中找到了一份旧文档,其中提到了我的担忧(http://www.python.org/doc/essays/cleanup/),但没有什么能让我完全满意的文件foo
将以这样的方式发布回调将被可靠地触发。任何人都可以向我指出一些可以为我解决这个问题的文档吗?
python - 在上下文处理程序中重新引发异常
从上下文管理器的数据模型文档中:
请注意,
__exit__()
方法不应重新引发传入的异常;这是调用者的责任。
我有一个临时文件,我想释放它的文件描述符,close
但不向磁盘写入任何内容。我直观的解决方案是传递异常,但在文档中不鼓励这样做——当然是有充分理由的。
此外,在这种特殊情况下,我不希望在调用者中进行错误处理,原因有两个:
- 保持调用者中的代码最少(见下文)
- 调用者对异常感到满意(快速失败是我们想要的)
上下文管理器的使用如下:
更新:我的问题有点表述不当,因为我的问题实际上归结为:在嵌套的上下文管理器中,如何将异常传递给最外层的 CM?
java - 为什么不能在 Closeable 类上自动调用 close()?
我不明白。例如,我们在代码中有一个 OutputStream 类型的变量,我们应该在停止使用它时调用 close() ,这就是为什么它没有以这种方式实现的原因:GC 在清理时调用 close() 本身这个变量?
更新: 好的到目前为止我得出的结论:释放非托管资源不仅是释放内存,更重要的是我们现在不知道它背后的内部行为,它可能存在对此资源数量的限制(连接数/ handlers) 这就是为什么我们需要尽快释放它们。我对吗?因为如果这都是关于内存的,那么我不知道为什么 GC 不能像管理资源那样完成这项工作。
visual-studio - Visual Studio + Qt 清理生成的文件
当我在 Visual Studio 2008 中为 Qt 项目按“清洁解决方案”时,所有来自 generatefiles 文件夹的 moc 和 ui 头文件都被清除。
我在这个文件夹中多了一个自己生成的 *.h 文件,怎么删除呢?
moc 和 ui 头文件在哪里被删除?我找不到任何设置,可以选择添加自定义文件,但“清理时删除的扩展名”除外。但是没有关于“生成的文件”的内容。
并且Project->Properties->Configuration Properties->General->Extensions to Delete on Clean
不能在这种情况下使用,因为它会忽略路径并仅识别扩展名或文件名。
java - 线程池 - 每个任务创建一个新的,检测一组任务何时完成
通过 ThreadPoolExecutors 运行并发任务。由于我有 2-3 组任务要做,所以现在有一个ThreadPoolExecutors的映射,并且可以向其中一个发送一组任务。
现在想知道一个池何时完成分配给它的所有任务。它的组织方式是我事先知道任务列表,因此将它们发送到新构建的池中,然后计划开始池/跟踪以了解何时完成。
一种方法是拥有另一个具有 1-2 个线程的池,轮询其他池以了解它们的队列何时为空。如果几次扫描显示它们为空(在轮询之间有第二次睡眠,假设它们已完成)。
另一种方法是子类ThreadPoolExecutor
,通过队列和覆盖进行跟踪,afterExecute(Runnable r, Throwable t)
以便可以准确地知道每个任务何时完成,很好地显示状态并知道如果一切顺利,一切都完成了。
在哪里有第二个的实现吗?最好有一个监听器可以实现的接口,然后将它们自己添加到子类方法中。
也在寻找一个实现:
要求池在超时内关闭,
如果超时后关闭未完成,则调用
shutdownNow()
如果失败,则获取线程工厂并停止其组中的所有线程。(假设我们设置了工厂并且它使用组或其他方式来获取对其所有线程的引用)
基本上,我们可以尽可能确定地清理池,以便我们可以在应用程序容器中运行它。一些任务调用 selenium 等,因此可以挂起线程。
最后一道防线是重新启动容器(tomcat/jboss),但希望这是最后一道防线。
问题是 - 知道这个的开源实现或任何代码开始吗?