当前位置: 首页 > 知识库问答 >
问题:

File deleteOnExit()函数即使在文件被删除后也保持引用指针打开

岳研
2023-03-14
    null

(如果我在上面的假设上错了,请纠正我)

在我的环境中,我面临着很高的磁盘利用率,我发现'df'和'du'命令的输出存在超过30GB的差异('df'查看FS本身的状态,而'du'忽略已删除的文件描述符)。

  1. 如果删除deleteOnExit(),我将不得不手动删除所有对象。这样,我的指针仍然处于打开状态(在linux上使用lsof+al1查看打开的文件),为什么会出现这种情况?
  2. 如果我删除delete(),那么我将不得不等到VM停止才能删除tempFiles(这在生产服务器中是非常罕见的情况)。(巨大的空间利用率)

共有1个答案

梅欣然
2023-03-14

我怀疑您的分析是正确的,这可能被视为Java中的一个bug:一旦调用delete,则可以期望删除由deleteonexit创建的引用。

然而,我们至少得到了警告(某种程度上)。deleteonexit的Javadoc表示:

一旦请求删除,就不可能取消该请求。因此,这种方法应谨慎使用。

 类似资料:
  • 我已经卸载了netbeans 8并安装了7.0.1版本。安装完成后,当我打开它时,屏幕显示“加载缓存模块”,并自动关闭,未显示任何错误。 我尝试删除user/appdata/local/netbeans中的文件夹,但没有成功(netbeans 7.1无法打开)。 运行Win 7 64

  • 函数名称:删除文件 函数功能:删除目录下的文件 函数方法 flag = file.del(path) 参数 类型 必填 说明 oldpath string 是 待删除文件的路径 返回值 类型 说明 flag boolean true - 删除成功,false - 删除失败 函数用例 --待删除文件的路径 path = "/sdcard/LuaBox/Projects/测试/error.log" -

  • 函数名称:删除文件 函数功能:删除文件 函数方法 bool,msg = os.remove(filename) 参数 类型 必填 说明 filename string 是 需要删除的文件路径 参数 类型 说明 bool boolean 成功 - tue,失败 - nil msg string 失败返回的错误信息 函数用例 bool,msg = os.remove("/mnt/sdcard/111/

  • 我有一个这样的bat文件: 这会将IP信息打印到屏幕上,但在用户可以读取该信息之前,CMD会自动关闭。 我相信CMD假设脚本已经完成,所以它关闭了。 脚本完成后如何保持CMD打开?

  • 一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个 指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是 函数指针。 函数指针的定义形式为: returnType (*pointerName)(param list); returnType

  • 我在ubuntu 18.04上安装Laravel最新版本时遇到这个错误 [ErrorException] 文件内容(./composer.lock):无法打开流:权限被拒绝 我甚至已经按照某人的建议运行了下面的命令来回答相同的问题 sudo chown-R myuser~/ 还是一样的错误有什么想法吗?