Code review request: 7188594 Print statistic collected by NMT with VM flag
Zhengyu Gu
zhengyu.gu at oracle.com
Wed Aug 29 15:11:38 PDT 2012
Please see comments in text.
On 8/29/2012 5:58 PM, Vladimir Kozlov wrote:
> Why do you need "-" at beginning of a line?
>
The output format was borrowed from JRockit, each category line starts
with '-'
> What #<n> means (malloc=5869KB, #163641)?
>
#n means counter. For example:
(malloc=464KB, #1418)
means 1418 malloc calls, total malloc-ed 464K
> Why some names are demangled and some not?
>
NMT uses the same decoder for decoding hs_err files. This particular
case (linux), decoder uses abi::__cxa_demangle() API to demangle
function name. I have not idea why it can not demangle some of the names.
Thanks,
-Zhengyu
> Thanks,
> Vladimir
>
> Zhengyu Gu wrote:
>> It is the same output as query through jcmd ...
>>
>> Here is an example:
>>
>> Native Memory Tracking:
>>
>> Total: reserved=707626KB, committed=286258KB
>>
>> - Java Heap (reserved=579592KB, committed=210500KB)
>> (mmap: reserved=579592KB,
>> committed=210500KB)
>>
>> - Class (reserved=464KB, committed=464KB)
>> (classes #942)
>> (malloc=464KB, #1418)
>>
>> - Thread (reserved=8430KB, committed=1926KB)
>> (thread #15)
>> (stack: reserved=6588KB, committed=84KB)
>> (malloc=25KB, #62)
>> (arena=1817KB, #28)
>>
>> - Code (reserved=55789KB, committed=11461KB)
>> (malloc=5869KB, #163641)
>> (mmap: reserved=49920KB, committed=5592KB)
>>
>> - GC (reserved=29662KB, committed=28218KB)
>> (malloc=558KB, #138)
>> (mmap: reserved=29104KB, committed=27660KB)
>>
>> - Compiler (reserved=109KB, committed=109KB)
>> (malloc=11KB, #156)
>> (arena=98KB, #2)
>>
>> - Internal (reserved=414KB, committed=414KB)
>> (malloc=414KB, #1132)
>>
>> - Symbol (reserved=1247KB, committed=1247KB)
>> (malloc=759KB, #6131)
>> (arena=488KB, #1)
>>
>> - Memory Tracking (reserved=5614KB, committed=5614KB)
>> (malloc=5614KB, #464)
>>
>> - Pooled Free Chunks (reserved=26305KB, committed=26305KB)
>> (malloc=26305KB)
>>
>>
>> Details:
>>
>> [0x00e314c2] ChunkPool::allocate(unsigned int)+0xe2
>> (malloc=24313KB #800)
>>
>> [0x00e2fc9b] Arena::grow(unsigned int)+0x2b
>> (malloc=4035KB #52)
>>
>> [0x01563c94] os::strdup(char const*, unsigned short)+0x34
>> (malloc=3489KB #81300)
>>
>> [0x014c362e] MemRecorder::MemRecorder()+0x22e
>> (malloc=2750KB #229)
>>
>> [0x014cbcc4] MemPointerArrayImpl<MemPointerRecordEx>::is_full()+0x54
>> (malloc=2640KB #1)
>>
>> [0x01040c71] CodeBuffer::block_comment(int, char const*)+0x21
>> (malloc=1270KB #81272)
>>
>> [0x0103ce52] CodeBlob::set_oop_maps(OopMapSet*)+0xa2
>> (malloc=1084KB #821)
>>
>> [0x00e2ffce] Arena::Arena(unsigned int)+0x1e
>> (malloc=360KB #1)
>>
>> [0x015e20b2] ParCompactionManager::ParCompactionManager()+0x282
>> (malloc=320KB #5)
>>
>> [0x015e235a] ParCompactionManager::initialize(ParMarkBitMap*)+0x1ea
>> (malloc=320KB #5)
>>
>> [0x015fe4fa] PSPromotionManager::PSPromotionManager()+0x1fa
>> (malloc=320KB #5)
>>
>> [0x01233042] BasicHashtable<(unsigned short)2304>::new_entry(unsigned
>> int)+0x112
>> (malloc=300KB #39)
>>
>> [0x016be512] Symbol::operator new(unsigned int, int, Thread*)+0x72
>> (malloc=294KB #6085)
>>
>> [0x014cc0b4] MemPointerArrayImpl<SeqMemPointerRecordEx>::is_full()+0x54
>> (malloc=216KB #1)
>>
>> [0x015e2112] ParCompactionManager::ParCompactionManager()+0x2e2
>> (malloc=160KB #5)
>>
>> [0x01738f42] universe_init()+0x432
>> (malloc=156KB #1)
>>
>> [0x0155de94] OopMapCache::OopMapCache()+0xd4
>> (malloc=56KB #45)
>>
>> [0x014b31b2] Stack<DataLayout*, (unsigned short)1280>::alloc(unsigned
>> int)+0x42
>> (malloc=56KB #14)
>>
>> [0x012331d2] BasicHashtable<(unsigned short)256>::new_entry(unsigned
>> int)+0x112
>> (malloc=42KB #8)
>>
>> [0x0159bd2d] ParkEvent::Allocate(Thread*)+0x21d
>> (malloc=29KB #68)
>>
>> [0x01278d8b] instanceKlass::add_dependent_nmethod(nmethod*)+0x5b
>> (malloc=18KB #1153)
>>
>> [0x0170103a] Thread::allocate(unsigned int, bool, unsigned short)+0x15a
>> (malloc=18KB #11)
>>
>> [0x014b3122] Stack<Klass*, (unsigned short)1280>::alloc(unsigned
>> int)+0x42
>> (malloc=16KB #4)
>>
>> [0x01080407] CompileBroker::allocate_task()+0xb7
>> (malloc=16KB #141)
>>
>> [0x0152c9f0] nmethod::add_handler_for_exception_and_pc(Handle,
>> unsigned char+0x70
>> (malloc=16KB #113)
>>
>> [0x0133cb59] JNIHandleBlock::allocate_block(Thread*)+0x149
>> (malloc=10KB #62)
>>
>> [0x010803eb] CompileBroker::allocate_task()+0x9b
>> (malloc=9KB #142)
>>
>> [0x01163aa8] Dictionary::Dictionary(int)+0xe8
>> (malloc=8KB #1)
>>
>> [0x015d63b0] PlaceholderTable::PlaceholderTable(int)+0xd0
>> (malloc=8KB #1)
>>
>> [0x01738f7d] universe_init()+0x46d
>> (malloc=8KB #1)
>>
>> [0x015c4352] PerfData::PerfData(CounterNS, char const*,
>> PerfData::Units, Per+0x1e2
>> (malloc=7KB #251)
>>
>> [0x01278fba] instanceKlass::mask_for(methodHandle, int,
>> InterpreterOopMap*)+0x7a
>> (malloc=5KB #45)
>>
>> [0x01232ef2] BasicHashtable<(unsigned short)1024>::new_entry(unsigned
>> int)+0x112
>> (malloc=4KB #1)
>>
>> [0x0122f5c2] GenericGrowableArray::raw_allocate(int)+0x1a2
>> (malloc=4KB #11)
>>
>> [0x015c6324]
>> _ZN15PerfDataManager20create_long_variableE9CounterNSPKcN8PerfD+0x24
>> (malloc=4KB #91)
>>
>> [0x014d026b] MemTracker::get_new_or_pooled_instance()+0x10b
>> (malloc=4KB #227)
>>
>> [0x015c6224]
>> _ZN15PerfDataManager19create_long_counterE9CounterNSPKcN8PerfDa+0x24
>> (malloc=3KB #85)
>>
>> [0x01701052] Thread::allocate(unsigned int, bool, unsigned short)+0x172
>> (malloc=3KB #1)
>>
>> [0x0170223a] T.6627+0xda
>> (malloc=3KB #2)
>>
>> [0x01572851] os::create_thread(Thread*, os::ThreadType, unsigned
>> int)+0x61
>> (malloc=2KB #13)
>>
>> [0x0164f34a] AdapterHandlerLibrary::initialize()+0x1ba
>> (malloc=2KB #1)
>>
>> [0x014c774f] MemSnapshot::MemSnapshot()+0x35f
>> (malloc=2KB #1)
>>
>> [0x0126ec33] T.7544+0x83
>> (malloc=2KB #12)
>>
>> [0x017071ae] JavaThread::initialize()+0x1ae
>> (malloc=2KB #7)
>>
>> [0x01567f2f] OSThread::pd_initialize()+0x6f
>> (malloc=2KB #14)
>>
>> [0x01707aad] Thread::Thread()+0x21d
>> (malloc=2KB #14)
>>
>> [0x0164f8fd] AdapterHandlerLibrary::get_adapter(methodHandle)+0x54d
>> (malloc=2KB #81)
>>
>> [0x01691b4b] StubCodeMark::StubCodeMark(StubCodeGenerator*, char
>> const*, cha+0x3b
>> (malloc=1KB #45)
>>
>> [0x015c617c]
>> _ZN15PerfDataManager22create_string_constantE9CounterNSPKcS2_P6+0x1c
>> (malloc=1KB #31)
>>
>> [0x01163d50] SymbolPropertyTable::SymbolPropertyTable(int)+0xd0
>> (malloc=1KB #1)
>>
>> [0x0176fed7] ReservedSpace::reserve_and_align(unsigned int, unsigned
>> int, un+0x37
>> (mmap: reserved=579592KB,
>> committed=210500KB)
>>
>> [0x0176fd35] ReservedSpace::initialize(unsigned int, unsigned int,
>> bool, cha+0x555
>> (mmap: reserved=79024KB, committed=33252KB)
>>
>> [0x01701b9d] Thread::record_stack_base_and_size()+0xcd
>> (mmap: reserved=6588KB, committed=84KB)
>>
>>
>> -Zhengyu
>>
>>
>> On 8/29/2012 4:13 PM, Vladimir Kozlov wrote:
>>> Hi, Zhengyu
>>>
>>> Could you give an example of output? I thought you need more changes
>>> for this.
>>>
>>> thanks,
>>> Vladimir
>>>
>>> Zhengyu Gu wrote:
>>>> This is a simple RFE, that allows VM to dump collected native memory
>>>>
>>>> tracking data before exits.
>>>>
>>>> CR: http://bugs.sun.com/view_bug.do?bug_id=7188594
>>>> Webrev: http://cr.openjdk.java.net/~zgu/7188594/webrev.00/
>>>>
>>>> Thanks,
>>>>
>>>> -Zhengyu
>>>>
More information about the hotspot-dev
mailing list