JProfiler:垃圾收集器收集对象后,如果堆上仍有任何活动对象,那么它是内存泄漏吗?

3
我正在使用JProfiler对我的应用程序进行性能分析。我注意到当我运行垃圾回收器时,所有标记为已记录的对象都变成了绿色,一段时间后,它们又面临一些在创建和销毁对象方面的差异。
顺便说一下,此时我的应用程序仍在运行,我的应用程序是否面临内存泄漏问题或者这是正常现象?
以下是一些快照,可能有助于您了解情况
enter image description here

以上是运行垃圾回收器时的快照...

但是一段时间后,这些条变成了部分绿色和红色...


1
你应该查看在进行完整的垃圾回收后内存使用量的差异。 - Peter Lawrey
1个回答

2
通常情况下,如果某个对象(例如char[])占用的大小尽管进行了GC,但仍然持续增长,则可以说你的内存正在泄漏。
如果特定类型的对象在GC之后再次出现“Red”,通常情况下是可以接受的。我假设你的应用正在执行一些任务并生成垃圾,因此这本身不是问题。但是,如果大小持续增长,可能会有问题。
一个好的策略是记录给定对象(例如char[])在GC之前和之后的分配大小,并查看收集了多少对象。在一段时间内重复这个过程。如果大小没有大幅增长,那么就没问题了。
然而,这里重要的一点是确保负载环境(请求数量、后台作业等)是相同的。否则,你的内存分析结果就不能进行苹果对苹果的比较。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接