【问题标题】:Objects eligible for GC in heap dump? [duplicate]堆转储中符合 GC 条件的对象? [复制]
【发布时间】:2017-01-31 02:28:23
【问题描述】:

我在某个时间点得到了堆转储。有没有办法我可以看到有多少/哪些可能的对象(或多少可能的内存)将在另一次 GC(次要/主要)时被回收(免费) GC 运行了吗?

我可以使用内存分析工具(MAT)、jvisualVM、Jprofiler 工具,并且可以使用其中任何一种

【问题讨论】:

  • 在系统(和运行时)类中,有一些方法可以查询当前 JVM 的当前空闲内存。我不知道确切的方法名称,但可以快速浏览一下。 (有据可查)
  • 通常堆转储不包含此类对象,因为创建堆转储正在调用 GC(如果您没有特别要求不要这样做)。顺便说一句,您使用哪个工具?
  • @talex 请在帖子中查看我的更新

标签: java memory-management garbage-collection heap-memory


【解决方案1】:

您可以尝试将这些参考文献转到该文档页面):

更新。刚刚注意到你有 MAT 所以先试试 更新 2。 示例

另外,您能否分享更多关于您试图通过此实现的目标的背景信息? (r

【讨论】:

  • 在概览选项卡上显示Size 143 MB Classes 12K Objects 2m Classloader 120,但是当我清理无法访问的对象直方图时,它显示shallow heap size as 864,367,304(864MB) 哪个是正确的?
  • @user3198603 你能把所有这些都贴上截图吗?比如当你刚刚加载它时,你触发了哪个动作以及之后你看到了什么
  • @Ival 请参阅随附的屏幕截图。在详细信息页面上,它显示总大小为 157.3MB,但是当我单击无法访问的对象时,它显示总大小为 864 MB。这是否意味着 864MB 大小用于无法访问的对象而 157MB 大小用于可访问对象?
  • 我正在尝试查看下一次 GC 可以清除的死/无法访问对象的大小
  • @user3198603 我继续并附上了一个例子。在我的情况下,它是约 13Mb 的无法访问的对象(在我的情况下,概览选项卡中有 40Mb 的可达对象)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多