JProfiler :在垃圾收集器收集对象之后。如果堆上有任何 Live 对象,是内存泄漏吗?
Posted
技术标签:
【中文标题】JProfiler :在垃圾收集器收集对象之后。如果堆上有任何 Live 对象,是内存泄漏吗?【英文标题】:JProfiler : After Garbage Collector collects the object. If any Live object is there on heap, is it Memory Leak? 【发布时间】:2012-02-24 07:49:57 【问题描述】:我正在使用 JProfiler 来分析我的应用程序。我注意到当我运行垃圾收集器时,所有标记的记录对象都变为绿色,一段时间后它再次面临创建和销毁对象的一些差异。 顺便说一句,我的应用程序此时仍在运行,我的应用程序是否面临内存泄漏问题或者这很正常。 有一些快照可以帮助您了解情况
上面是我运行垃圾收集器时的快照...
但一段时间后,这些条形部分变为绿色和红色...
【问题讨论】:
你应该看看full GC后使用多少内存的区别。 【参考方案1】:通常,如果某个对象(例如 char[])占用的大小在 GC 的情况下持续增长,则可以说您的内存正在泄漏。
如果在 GC 之后对于某些类型的对象再次看到“红色”,这通常是可以的。我假设您的应用程序正在做一些工作并产生垃圾。所以,这本身不是问题。但是,如果大小继续增长,那可能会是个问题。
一个好的策略是在 GC 之前和之后记录给定对象的分配大小,比如 char[],并查看有多少对象被收集。在一段时间内重复此练习。如果大小没有大幅增长,你应该没问题。
这里的重要点是,确保负载配置文件(请求数、后台作业等)相同。否则,您的内存分析结果将无法进行比较。
【讨论】:
以上是关于JProfiler :在垃圾收集器收集对象之后。如果堆上有任何 Live 对象,是内存泄漏吗?的主要内容,如果未能解决你的问题,请参考以下文章