问题标签 [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# - xUnit 和 Watin 清理
我有一些使用 xUnit 和 Watin 的测试用例。为了使类中的所有 Facts 共享同一个 IE 实例,我创建了一个单例类,因此第一个测试将启动一个新的 IE 实例,接下来的测试将使用同一个实例。
在所有 Facts 完成后,IE 实例仍在运行。我只是想知道在课堂上的所有测试完成后如何关闭 IE。
java - java Play中返回Result后如何执行代码!框架?
我正在使用播放!框架 2.2.1,我想流式传输在旅途中创建的文件。文件完全流式传输后,我想清理它,但我没有任何上下文可以这样做。
这种操作是否有任何注释或回调可用?
python - Try-finally 装饰器清理 python 对象
对象清理似乎是我在编程期间遇到的一个非常常见的问题。迄今为止,我一直使用此处with
推荐的声明
今天我有另一个想法,这对我来说似乎更优雅(因为它不需要最终用户的 with 声明)。这个想法是对某种类型的对象使用 try-finally 装饰器(具有清理方法)。
只是想知道这种做法是否有任何问题,或者是否有更好的方法。我不喜欢我的许多类需要使用 with 语句进行初始化,但我也想确保我的对象正确关闭。这是一个简短的例子。
java - 何时应进行应用程序清理
我刚刚读到我们可以使用关闭钩子作为一个例子,说明clean up
在应用程序退出之前提供功能是理想的。
我想知道的是,例如,如果您有一个像 Web 服务一样 24/7 运行的应用程序,那么理想的时间是什么时候终止和清理诸如 Executor Services 之类的东西。如果应用程序不应该关闭,那么我们真的没有方便的清理期或确实没有干净关闭的能力吗?
谢谢
c++ - 如何在 SIGSEGV 之后销毁在 main() 中创建的对象
我想知道是否有任何简单的方法可以销毁在main()
应用程序刚刚崩溃(或被中断或其他原因)之后创建的对象。请参阅代码:
所以,我安装了一个信号处理程序,它在执行时会进行一些清理,然后退出。显然,这是一个很大的应用程序,所以我想调用创建临时文件的类的析构函数(理论上)。
动态分配它并在signal_handler
刚刚释放它时很容易(为了调用析构函数),但这涉及一些额外的工作。
而且,它可能是一个全局对象,但我想避免全局初始化顺序问题......
dart - 可以删除对象后取消内部流订阅的模式?
根据我对 Dart 的理解,Stream
任何听众都将被保留作为参考,直到StreamSubscription.cancel()
被调用。这意味着在流也被销毁之前,我的监听对象不会从内存中删除。
一旦我不再需要该对象,是否有任何标准模式可以确保我取消所有内部侦听器?这甚至是 Dart 中的一个问题,还是我误解了这个概念?
我能想到的一个解决方案是一个destroy
orcancelSubscriptions
方法,一旦我知道不再需要对象,就必须手动调用它。
javascript - 使用 Knockout 的 foreach 绑定时,是否会在更新视图模型时自动清除事件?
当您使用 Knockout 的 foreach 绑定写出 DOM 的一部分并且其中有事件(例如,使用 click 绑定)时,如果视图模型中的列表发生更改并且它必须重写那个部分?我看过很多关于 Backbone.js 和清理事件等的文章,但在 Knockout 上并没有太多关于这方面的文章。
java - 如何通知 Jetty 9.02 的“内容消耗”。内容监听器?
我有一个使用 Jetty v9.0.2 发送异步请求的 Jetty HttpClient。我有一个成功缓冲响应的 Response.ContentListener 和一个在调用完成时调用的 Response.CompeleteListener。
- Jetty 9.2 JavaDocs 有一个Request.AsyncContentListener,它有一个参数告诉 Jetty 内容已被消费:
- callback - 使用内容时要调用的回调。
此侦听器类型不在 Jetty v9.0.2 响应 api 中:
- 导入 org.eclipse.jetty.client.api。结果;
真的有两个问题:
- Response.ContentListener 是否需要通知 Jetty 客户端内容已被使用?
- 如果是这样:如何使用 Jetty v9.0.2 进行管理
- 使用带有这两个 Response.ContentListener 和 Response.CompeleteListener 设置的异步调用需要进行什么样的清理?
- 在 Jetty v9.0.2 中使用异步是否有潜在的问题?
它似乎工作正常;我需要确保我们没有资源泄漏或潜在泄漏等。当然,我们需要程序干净整洁,以便它可以 24x7 运行。 提前感谢您的欢迎帮助。
笔记:
- Request.AsyncContentListener - 稳定的码头文档(码头 9.2,我相信)
rabbitmq - 在杀死兔子生产商后进行清理
我的问题的关键是确定如何在兔子生产者被杀后进行清理。
我有一个有多个生产者和多个消费者(工人)的 rabbitmq 环境。目前,所有消息(又名工作)都输入一个中央队列,消费者一次选择一条消息(工作任务)并进行处理。任何给定的生产者都会生成约 800 条工作消息,大约需要 3-4 小时才能完成。
工人是快乐的人,他们不知道任务,可以处理生产者提出的任何事情。他们以拉动方式工作,因为他们的工作可能需要长达 10 分钟才能完成每项任务。一旦他们准备好进行更多工作,他们就会轮询队列。
生产者更善变——有时他们会在队列中创建大量工作作为消息,然后决定他们根本不需要完成这些工作。更糟糕的是,它们有时会产生大量工作;取消所有这些;然后用不同的参数重新发布作品。
我没有要求制作人重新排队工作的机制。部分问题是他们在将请求推送到队列之前必须完成其他工作。
我不能不想把工作留在队列中,因为生产者的单次运行代表 3 或 4 小时的工作。而我最糟糕的情况是,我有几个生产者回溯了他们要求的工作,而我还有几个其他生产者希望将他们的工作保留在队列中。
所以在最坏的情况下,我的队列看起来像这样,我需要清除 Prod B 消息:
而且我不能保证来自 A、B 和 C 的消息不会交错,因为我目前没有同步写入队列。
我考虑过的:
- 一个简单的队列清除将取出我需要保留的消息。
- 我可以编写一个专门的消费者来提取所有消息并将好的消息重新排队,但这似乎是一种黑客行为。
作为一个额外的挑战,我可能需要支持制作人的工作优先于其他人的工作。
综上所述,在生产者将工作放入队列然后决定取消工作请求后,我该如何清理?
c - fontconfig 库中 FcFini 的意义何在?
fontconfig 库有一个函数FcFini
。
文档只是说
FcFini [...]
释放之前调用 fontconfig 函数分配的所有数据结构。Fontconfig 返回到未初始化状态,需要在调用任何其他 fontconfig 函数之前重新调用其中一个 FcInit 函数。
但是,文档没有说明我为什么要调用它。它会释放一些内存,但我无法想象 fontconfig 会吞噬大量内存。无论如何,除非我能确保我永远不会再调用 fontconfig,否则我只能在程序结束时调用 FcFini,此时释放内存毫无意义。那么为什么要打扰呢?
顺便说一句,我注意到使用 fontconfig 的cairo渲染库只FcFini
在其测试代码中调用,而在生产代码中从不调用。所以似乎开罗的作者也没有看到调用它的意义......还是他们错了?