简体   繁体   English

查找JVM端口库的内存使用情况详细信息

[英]Finding JVM Port Library memory usage details

This is from a core dump of a running IBM JVM (1.7). 这来自正在运行的IBM JVM(1.7)的核心转储。
How can I find for what is the "Port Library" memory used for (185,624,064B)? 如何找到用于(185,624,064B)的“端口库”内存是什么? What does it means "unused"? “未使用”是什么意思?

    0SECTION       NATIVEMEMINFO subcomponent dump routine
NULL           =================================
0MEMUSER
1MEMUSER       JRE: 593,910,528 bytes / 7280 allocations
1MEMUSER       |
2MEMUSER       +--VM: 544,510,528 bytes / 5987 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Classes: 57,037,616 bytes / 1746 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Shared Class Cache: 16,777,312 bytes / 2 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Other: 40,260,304 bytes / 1744 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Memory Manager (GC): 276,343,080 bytes / 794 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Java Heap: 268,439,552 bytes / 1 allocation
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Other: 7,903,528 bytes / 793 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Threads: 22,618,136 bytes / 409 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Java Stack: 1,460,272 bytes / 66 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Native Stack: 20,054,016 bytes / 68 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Other: 1,103,848 bytes / 275 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Trace: 721,064 bytes / 418 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JVMTI: 17,784 bytes / 13 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JNI: 701,192 bytes / 1966 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Port Library: 185,624,064 bytes / 68 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Unused <32bit allocation regions: 185,614,504 bytes / 1 allocation
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Other: 9,560 bytes / 67 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Other: 1,447,592 bytes / 573 allocations
1MEMUSER       |
2MEMUSER       +--JIT: 48,401,712 bytes / 1182 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JIT Code Cache: 18,874,368 bytes / 9 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JIT Data Cache: 12,583,296 bytes / 6 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Other: 16,944,048 bytes / 1167 allocations
1MEMUSER       |
2MEMUSER       +--Class Libraries: 998,288 bytes / 111 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Harmony Class Libraries: 2,000 bytes / 1 allocation
2MEMUSER       |  |
3MEMUSER       |  +--VM Class Libraries: 996,288 bytes / 110 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--sun.misc.Unsafe: 875,440 bytes / 33 allocations
4MEMUSER       |  |  |  |
5MEMUSER       |  |  |  +--Direct Byte Buffers: 463,392 bytes / 28 allocations
4MEMUSER       |  |  |  |
5MEMUSER       |  |  |  +--Other: 412,048 bytes / 5 allocations
3MEMUSER       |  |  |
4MEMUSER       |  |  +--Other: 120,848 bytes / 77 allocations

This memory is reserved for use for some native structures (some class- and thread- related data) that need to be in the bottom 4GB of memory when -Xcompressedrefs is used. 该内存保留用于某些本机结构(某些与类和线程相关的数据),当使用-Xcompressedrefs时,这些本机结构必须位于底部4GB的内存中。

The reservation keeps space available in the bottom 4GB of the address space so that it isn't doesn't fill up with other allocations that don't need to reside there. 预留会将可用空间保留在地址空间的底部4GB中,这样它就不会被不需要驻留在其中的其他分配所填满。

The size of the reservation can be configured with the -Xmcrs option in recent versions. 可以在最新版本中使用-Xmcrs选项配置保留大小。 See: https://www-01.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.aix.70.doc/diag/appendixes/cmdline/xmcrs.html 请参阅: https : //www-01.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.aix.70.doc/diag/appendixes/cmdline/xmcrs.html

My understanding is that the space is marked unused in the diagnostics as it is not backed by RAM until sub-allocated to a particular purpose, then it will be attributed to another section. 我的理解是,该空间在诊断中被标记为未使用,因为只有在子空间分配给特定用途之前,该空间才由RAM支持,然后才会归因于另一部分。 So the free space will shrink with time unless more is required, then a new (smaller) chunk will be reserved and added to the unused list. 因此,除非需要更多空间,否则可用空间会随着时间而减少,然后将保留一个新的(较小的)块并将其添加到未使用的列表中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM