【发布时间】:2011-12-14 07:54:16
【问题描述】:
我试图检测我的一些 Java 代码以确保正确地对对象进行垃圾回收,但令人惊讶的是,它并没有像我预期的那样经常被调用。
我现在想知道这是因为仪器故障还是我需要解决的实际内存泄漏。 VisualVM 分析器似乎表明前者。
担心的情况是我有一个处理请求的线程,并且在请求中创建了数千个临时对象。有时,该线程写入的套接字意外关闭,线程遇到异常并死亡。
当线程死亡时,似乎不会在这些对象上调用 .finalize() 。这是不信任我的仪器的理由吗?
【问题讨论】:
-
你有一个简单的、独立的例子来展示这种行为吗?
-
@aix:是的,当然,他遇到了涉及数千个对象、网络访问和意外套接字关闭的情况。他不知道问题出在哪里,顺便说一句,正是他来这里问他的问题的原因......但是他应该简单地写一个独立的例子来重现这个问题。老实说,这个“SSCCE 议程”起源于 Usenet 上的 comp.lang.java(并且已经被在 SO 上推它的同一个人推到了那里),越来越累了……我的意思是,说真的,你阅读这个问题了吗? 你写一个SSCCE来重现这个怎么样?
-
@CedricMartin:冷静点。我认为这是一个合理的问题。如果答案是否定的,那么答案是否定的。没有理由对无事如此着迷。