【问题标题】:visualvm - what included in to "Used heap"?visualvm - “已用堆”中包含什么?
【发布时间】:2014-07-07 13:21:19
【问题描述】:

我正在尝试了解 visualvm 的输出(需要创建具有相同信息的控制台实用程序) - 但无法理解 - 哪些 Java 内存部分包含在“已用堆”?

例如 - 让我们采取:

$ jmap -heap 27200
Attaching to process ID 27200, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.45-b01

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 1073741824 (1024.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 1073741824 (1024.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 352452608 (336.125MB)
   used     = 319379152 (304.5836944580078MB)
   free     = 33073456 (31.541305541992188MB)
   90.61619768181713% used
From Space:
   capacity = 2686976 (2.5625MB)
   used     = 2326528 (2.21875MB)
   free     = 360448 (0.34375MB)
   86.58536585365853% used
To Space:
   capacity = 2752512 (2.625MB)
   used     = 0 (0.0MB)
   free     = 2752512 (2.625MB)
   0.0% used
PS Old Generation
   capacity = 715849728 (682.6875MB)
   used     = 253887896 (242.1263656616211MB)
   free     = 461961832 (440.5611343383789MB)
   35.46664698879371% used
PS Perm Generation
   capacity = 185139200 (176.5625MB)
   used     = 126335488 (120.48291015625MB)
   free     = 58803712 (56.07958984375MB)
   68.23810840707965% used

我的建议 - visualvm 的“Used heap”是:

Eden Space + From Space + To Space + Old Generation(没有Perm Generation - 因为它显示在其他选项卡上)

对吗?

【问题讨论】:

    标签: java heap-memory visualvm


    【解决方案1】:

    我相信您的假设是正确的,该图显示了一个橙色区域,表示为该 JVM 实例预分配的总堆空间(即,由 -Xmx、-Xms 定义),而通常振荡的蓝色区域是实时监控堆空间,由年轻代(Eden, Survivor = From & To)和老年代空间组成。

    因此,如果您需要解析 jmap 中的信息并在命令行界面实用程序中显示此数据,则需要解析包含此信息的所有行(不包括您指出的“Perm Generation”): 使用 = 319379152 (304.5836944580078MB)

    改进工具的建议是提交一份特别报告,重点关注老年代空间的重大变化,因为这将反映完整的 GC 周期(这比年轻区域中的周期更重要,因为“停止- the-world' 算法会影响您的应用程序的性能),您可以检查此类循环的频率,如果您想要更复杂的方法,请在完整 GC 循环期间解析 GC 日志。

    如果您有兴趣,我的博客中有一篇关于它的帖子: https://marcelorjava.wordpress.com/2011/01/21/logs-do-garbage-collector/

    【讨论】:

      猜你喜欢
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2013-05-01
      • 1970-01-01
      相关资源
      最近更新 更多