Code review request: 7199092 NMT: NMT needs to deal overlapped virtual memory ranges

Zhengyu Gu zhengyu.gu at oracle.com
Fri Sep 28 13:36:55 PDT 2012


With PermGen removal integration, virtual memory usage patterns have 
changed vs. earlier. NMT can not longer just track reserved memory 
regions, and assume commits and uncommits are performed from the tail end.

NMT now tracks committed memory regions, alone with reserved memory 
regions, a virtual memory map is maintained by NMT, and it is reported 
with detail tracking data.

The changes also include some cleanup and enhanced assertion, etc.

CR: http://bugs.sun.com/view_bug.do?bug_id=7199092
Webrev:  http://cr.openjdk.java.net/~zgu/7199092/webrev.00/


An example of virtual memory map:

Virtual memory map:

[0x8f17e000 - 0x8f364000] reserved 1944KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0x8f17e000 - 0x8f364000] committed 1944KB from 
[Thread::record_stack_base_and_size()+0x120]

[0x8f389000 - 0x8f680000] reserved 3036KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0x8f389000 - 0x8f680000] committed 3036KB from 
[Thread::record_stack_base_and_size()+0x120]

[0x8f7dd000 - 0x8f900000] reserved 1164KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0x8f7dd000 - 0x8f900000] committed 1164KB from 
[Thread::record_stack_base_and_size()+0x120]

[0x8fa20000 - 0x8faa1000] reserved 516KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0x8fa20000 - 0x8faa1000] committed 516KB from 
[Thread::record_stack_base_and_size()+0x120]

[0x8fd30000 - 0x914b8000] reserved 24096KB for GC
         from [ReservedSpace::initialize(unsigned int, unsigned int, 
bool, char*, unsigned int, bool)+0x555]
     [0x8fd30000 - 0x914b8000] committed 24096KB from 
[PSVirtualSpace::expand_by(unsigned int)+0x95]

[0x914b8000 - 0x916bc000] reserved 2064KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0x914b8000 - 0x916bc000] committed 2064KB from 
[Thread::record_stack_base_and_size()+0x120]

[0x916bc000 - 0x91860000] reserved 1680KB for GC
         from [ReservedSpace::initialize(unsigned int, unsigned int, 
bool, char*, unsigned int, bool)+0x555]
     [0x916bc000 - 0x916c7000] committed 44KB from 
[PSVirtualSpace::expand_by(unsigned int)+0x95]
     [0x91764000 - 0x9176f000] committed 44KB from 
[CardTableModRefBS::resize_covered_region(MemRegion)+0xebf]
     [0x9180b000 - 0x91811000] committed 24KB from 
[CardTableModRefBS::resize_covered_region(MemRegion)+0xebf]
     [0x9185f000 - 0x91860000] committed 4KB from 
[CardTableModRefBS::CardTableModRefBS(MemRegion, int)+0x2a0]

[0x91860000 - 0xb1060000] reserved 516096KB for Java Heap
         from [ReservedSpace::initialize(unsigned int, unsigned int, 
bool, char*, unsigned int, bool)+0x190]
     [0x91860000 - 0x92d50000] committed 21440KB from 
[PSVirtualSpace::expand_by(unsigned int)+0x95]
     [0xa6710000 - 0xa7180000] committed 10688KB from 
[PSVirtualSpace::expand_by(unsigned int)+0x95]
     [0xb0e60000 - 0xb0ea9000] committed 292KB from 
[VirtualSpace::initialize(ReservedSpace, unsigned int)+0x3e8]

[0xb1069000 - 0xb71e9000] reserved 99840KB for Code
         from [ReservedSpace::initialize(unsigned int, unsigned int, 
bool, char*, unsigned int, bool)+0x555]
     [0xb1069000 - 0xb1072000] committed 36KB from 
[VirtualSpace::initialize(ReservedSpace, unsigned int)+0x3e8]
     [0xb11e9000 - 0xb1429000] committed 2304KB from 
[VirtualSpace::initialize(ReservedSpace, unsigned int)+0x3e8]

[0xb71e9000 - 0xb77e9000] reserved 6144KB for Class
         from [ReservedSpace::initialize(unsigned int, unsigned int, 
bool, char*, unsigned int, bool)+0x555]
     [0xb71e9000 - 0xb750a000] committed 3204KB from 
[VirtualSpace::initialize(ReservedSpace, unsigned int)+0x3e8]

[0xb77e9000 - 0xb783a000] reserved 324KB for Thread Stack
         from [Thread::record_stack_base_and_size()+0x120]
     [0xb77e9000 - 0xb783a000] committed 324KB from 
[Thread::record_stack_base_and_size()+0x120]

Tests performed:
- JPRT tests

- Linux 32 bit:
     vm.quick.testlist
     nsk.stress
     runtime.ParallelClassLoading
     nsk.quick-jdi.testlist
     nsk.quick-jvmti.testlist

- Solaris x64
     vm.quick.testlist
     runtime.ParallelClassLoading
     nsk.stress.jck60

- Solaris sparcv9
     vm.quick.testlist
     runtime.ParallelClassLoading
     nsk.stress.jck60


Thanks,

-Zhengyu


More information about the hotspot-dev mailing list