java – 为什么char []生存这么多代,我应该担心吗?

我第一次检查NetBeans中的分析器,今天早上我注意到,我通过监视器分析器显示了超过1700个幸存的代码,但是一个不变的堆大小。在做一些阅读时,我发现this article讨论了使用NetBeans分析器来发现泄漏。

所以,在接下来的文章建议我开始一个内存分析器。在查看结果时,我发现char []占绝大多数的生存世代。目前,在这篇文章中,char []是22代并计数。

现在有一些posts (comment by OldCurmudgeon near the bottom)表明,如果我的堆稳定没有泄漏,yet others说如果这几代人继续成长的话。所以我有点困惑,是对的。

所以我的问题是:

基于以下屏幕截图,我应该进一步调查潜在的内存泄漏?

内存(堆)

存储器(GC)

实时分配的对象

char []可能由String对象持有。它们可以在任何地方创建,用于任何目的,例如分析器和JMX使用它们,所以一个不做任何事情的过程将显示这些(和不断增长的堆)

注意:所有的String文字和Classes的名字都将生存下去,直到ClassLoader被卸载(这可以使程序的生命)

要确定您的堆使用情况是否在增长,您应该查看完整GC后保留的内容。看看每个下沉的底部,看起来和我一样。其他信息对于性能调优很有用,但本身不是问题。

http://stackoverflow.com/questions/14260553/why-is-char-surviving-so-many-generations-and-should-i-be-concerned

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 为什么char []生存这么多代,我应该担心吗?