|
|
1
3
当然可以。问题是你是否真的想要:) 实际上,我在野外遇到了这个问题;正如您注意到的,使用deleteonexit()清理临时文件在运行服务而不是应用程序时是无用的。我发现最稳定的解决方案是重新构造程序流,以便在每个任务的基础上创建临时文件,并在不再需要时显式删除。 如果您以任何其他方式执行,例如,如果程序无法断定在执行过程中的任何时候是否应该保留或丢弃临时文件,那么您可能会遇到设计问题。在一些管理器工具中包装文件只会推迟“真正的”解决方案;) |
|
|
2
2
你可能想调查一下 PhantomReference :
|
|
|
3
2
当你的类被破坏时,依靠一个事件来触发不会是万无一失的,并且可能会留下文件。 我认为实现临时文件清理的最简单和最可靠的方法如下:
使用这种方法,您不必担心程序是否因某种原因崩溃并留下临时文件,也不必担心程序删除仍在使用的文件。 |
|
|
4
1
对于这种类型的信息处理,垃圾收集是错误的命名空间。 以下几点应该足以处理临时文件。
|
|
|
5
1
垃圾收集器对这些东西不起作用。它是为内存管理而设计的,有很多缺点。
这两件事经常发生,如果Java是以大堆大小开始的——服务器端的东西并不少见。 在程序中的某个时刻,您必须关闭该文件上的流(否则,您将耗尽系统文件句柄,这会使系统不可用,我已经这样做了)。在关闭流时,还可以删除关联的文件。这是最干净的方法。 |
|
|
7
0
垃圾收集器不是一个释放这种资源的地方。请看下面这两篇关于如何释放爪哇资源的文章。 http://c2.com/cgi/wiki?ReleasingResourcesInJava 以及Java终结器的性能问题。他们可能会对如何使用它给予一些洞察和理解。 http://www.enyo.de/fw/notes/java-gc-finalizers.html |
|
codeforester · 测量GC暂停时间的最佳方法是什么? 7 年前 |
|
|
Venki WAR · 需要解释G1的并行完整GC 7 年前 |
|
|
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 7 年前 |
|
|
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 |
|
|
goks · 如何清除熊猫的数据帧内存? 7 年前 |