各 Thread オブジェクト内に Thread::_allocated_bytes というフィールドがあり, ここにそのスレッドが確保したメモリ量を記録している.
このフィールドは, メモリの確保処理時に以下の関数でインクリメントされている.
sun.management.ThreadImpl.getThreadAllocatedBytes() は, 単にそのフィールドの値を取得して返すだけ.
(なお, このメソッドは JSR-174 には存在しない Sun Microsystems の独自拡張機能)
(#TODO 他にもあるか?? _allocated_bytes 及び allocated_bytes_offset での検索結果は以下の通り)
-> Thread::incr_allocated_bytes()
-> MacroAssembler::incr_allocated_bytes()
-> PhaseMacroExpand::expand_allocate_common()
sun.management.ThreadImpl.getThreadAllocatedBytes(long id) -> sun.management.ThreadImpl.getThreadAllocatedBytes() -> sun.management.ThreadImpl.getThreadAllocatedMemory1() -> Java_sun_management_ThreadImpl_getThreadAllocatedMemory1() -> jmm_GetThreadAllocatedMemory() -> Thread::cooked_allocated_bytes()
See: here for details
(#Under Construction)
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.