问题标签 [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.

0 投票
1 回答
911 浏览

python - Close an sqlite3 database on exit, no matter what

I'm currently writing a script that uses sqlite3. I recently ran into a problem with the database being in use by another program due to my code exiting early with an error.

With similar problems, one usually uses:

But this won't work in my case. In a nutshell, this is my code:

import sqlite3

After the program exits without closing the connection, I get errors when I try to modify the database.

Is there a way to safely close the connection, even on an unclean exit?

0 投票
1 回答
723 浏览

python - 使用 __del__ 方法清理对象

我正在开发一个 python 程序来监视和控制游戏服务器。游戏服务器有许多游戏核心,这些核心处理客户端。

我有一个名为的 python 类Server,它包含该类的实例Core,这些实例用于管理实际的游戏核心。该类Core需要通过 TCP-Socket 连接到游戏核心,以便向该特定游戏核心发送命令。为了正确关闭这些套接字,Core该类有一个__del__关闭套接字的方法。

一个例子:

现在,当我使用Core类本身时,析构函数总是被正确调用。但是当我使用这个Server类时,Core里面的对象Server.Cores 永远不会被破坏。我已经读过 gc 在循环引用和带有析构函数的类方面存在问题,但是Core对象从不引用该Server对象(只有套接字对象, in Core.CoreSocket),因此没有创建循环引用。

我通常更喜欢使用with-statement 进行资源清理,但在这种情况下,我需要通过Server类中的许多不同方法发送命令,所以使用with不会有帮助......我还尝试在每个命令上创建和关闭套接字,但是当我需要发送许多命令时,这确实会降低性能。使用模块创建的弱weakref引用也无济于事,因为在我创建Server对象后会立即调用析构函数。

当对象被 gc 清理时,为什么Core对象不会被正确破坏?Server我想我只是忘记了一些简单的事情,但我就是不知道它是什么。

或者,当对象被清理时,也许有更好的方法来关闭这些套接字?

0 投票
1 回答
196 浏览

android - Android卸载是否完全清理?

如果我通过设备上的应用程序管理器卸载 Android 应用程序,系统会完全卸载它而不留下任何残留物吗?

我们的 Android 应用程序的行为出现了一些问题,在卸载旧版本和安装新版本之间或安装新版本之后,必须重新启动平板电脑。谢谢。

0 投票
6 回答
12902 浏览

node.js - 准备部署时如何清理 node_modules 文件夹

在准备部署代码时,我将如何清理node_modules文件夹。

我正在使用node-webkit制作应用程序,并且希望在捆绑应用程序的最终版本时包含尽可能少的文件,因为解压缩过程需要一些时间。

我已经查看npm dedupe并使用它来删除重复文件并仅获取生产文件,npm install --production但是我仍然留下了我不需要的Readme文件和文件。benchmarkstestsbuild

node_modules对于文件夹中的每个模块,我想最终得到的是一个LICENSE文件(如果存在),package.json以及模块运行所需的任何其他内容,但仅此而已。

问题:如何为 SCM 提交自动清理 node_modules 目录在某种程度上朝着相同的方向发展,但它正在谈论提交,所以并不是我真正想要的。

问题:NPM 清洁模块再次与我的路线有些相似,但并不完全如此。

这个答案很有帮助,因为它是dedupe捆绑最终应用程序的更有效版本。

更新
我尝试了从这里链接的自定义模块,但它似乎无法正常工作,即使经过一些摆弄。

说了这么多,我还没有找到正确的答案。


这是我正在寻找的一个例子。

在我的项目中,我目前有两个依赖项:socket.iosocket.io-client.

它们一起构成15 MB ,在110个文件夹中包含550 个文件。

手动清理readme, makefile,VC++构建文件.pdb.obj其他不必要的文件我能够将其缩小到2.74 MB ,在73个文件夹中有265个文件。 这只有两个模块。

我想知道是否有办法自动执行此操作,最好使用npm.

0 投票
3 回答
14976 浏览

three.js - 清理 Threejs WebGl 上下文

我在清理 WebGl-Scenes 时遇到问题。我将 Three.js 与 WebGlRenderer 一起使用。在我的应用程序中,我必须经常更改视图,因此需要一直渲染新场景。到目前为止,我销毁并重新初始化了整个 Threejs 场景。切换场景约 15 - 20 次后,我收到以下警告:

WARNING: Too many active WebGL contexts. Oldest context will be lost.

切换几次后,上下文完全丢失,应用程序崩溃。

清理时有没有办法破坏当前的 WebGl 上下文?还是 WebGlRenderer 在实例化时总是创建一个新的 WebGl 上下文?

我正在使用 Three.js R64。

0 投票
1 回答
129 浏览

cron - sh - 出现时删除目录

在我的应用程序中,每当我打开 VS2013 时,都会生成一个烦人的文件夹,这会导致我的整个构建失败。该文件夹有一些我不想要的旧依赖项。我不知道为什么它会出现在那里:我只是希望它在 VS2013 启动时消失。

我需要一个简单的脚本来在它出现时将其删除。要删除目录,我们这样做:

但是有没有办法神奇地告诉sh脚本在文件系统中出现时删除它?就像是:

注意: cron 不适合,因为我打开和关闭 VS2013 太不规律,不知道该作业应该多久运行一次。

0 投票
0 回答
346 浏览

java - 通过代码浏览到 URL 时释放 java 小程序资源

我有一个 Java 小程序,它提供一个 JButton,允许用户导航到另一个 URL(它有一个反馈表)。

问题:当我从小程序导航到 Safari 中的表单时,输入表单时出现乱码或无法输入(实际上只有每 10 次左右的击键才输入一次)。

手动终止用于 Safari 的 Java Web 插件可立即解决此问题。我假设我没有在我的小程序中正确释放资源。我知道应该在 stop() 方法中执行清理,但我不确定我没有释放哪些资源可能会导致这种行为。

这是浏览到 URL 的代码:

我最好的猜测是 Safari 通过将资源传递给一些 Java ActionListener 以某种方式处理资源不当。但是,包括:

在一个finally街区似乎没有帮助。我的小程序中有其他动作侦听器,我知道它们没有被明确销毁,但我假设这通常不是问题,因为它们应该被自动处理掉。

编辑:检查我的代码,似乎我只有 MouseListener 或 ActionListeners(在 JButtons 上)。所以更令人困惑的是我遇到了键盘问题。我尝试在小程序的 stop 方法中手动删除它们(我在 finally 块中手动调用),但它没有帮助。MouseEvents 和 ActionEvents 不应在离开页面后继续运行!

编辑2:更多信息:让小程序打开一个新窗口,然后包含指向最终调查的链接也不起作用。但是,使链接在新窗口中打开(使用 html 的 target="_blank")似乎可以解决问题。因此,为了解决问题,我让小程序将用户引导到一个启动页面,该页面感谢他们,然后提供一个用于最终调查的链接。这很烦人,并且没有回答最初的问题,但现在看来我将要这样做。

0 投票
1 回答
652 浏览

c++11 - C++ 中更复杂的清理

我很清楚std::unique_ptrC++11 中的 RAII 模式和其他“智能指针”,但仍有一些情况我无法弄清楚如何在没有goto Cleanup最终进行清理的部分的情况下很好地处理。

具体来说,我正在考虑 Windows 编程,有时我会想要泄漏句柄,而其他时候我不会。

如果我有一个看起来有点像他的函数:

我真的不知道如何unique_ptr在这里帮助我,除非我毕竟使用 therelease()来表示成功/告诉不要清理它。(我可以创建一个特殊的删除器,以便它正确清理 Windows 句柄)。但是,我的问题是,对于我想将分配的内存/句柄泄漏回调用者的情况,智能指针的这种用法是“正确的”吗?有更好的方法吗?退回罐头也可以,我想...unique_ptrifunique_ptrunique_ptrrelease()shared_ptr

0 投票
1 回答
226 浏览

php - PHP 从字符串中清除奇数字符

我正在使用套接字接收一些信息但它会根据客户端和操作系统得到一些垃圾。

示例:接收“Hello”字符串

它存储在 $msg 变量中。我怎样才能从那些奇怪的字符中清除它?(字符因味精而异)。

提前致谢

0 投票
4 回答
1664 浏览

python - Python中的文本清理

我是 Python 新手,找不到删除无用文本的方法。主要目的是保留我想要的单词并删除所有其他单词。在这个阶段,我可以检查我的in_data并找到我想要的单词。如果sentence.find(wordToCheck)是肯定的,则保留它。in_data是每行句子,但当前输出是每行一个单词。我想要的是保留格式,在每一行中找到单词并删除其余部分。

输出

in_data是类似的句子

我希望看到输出就像