Up Top

Serviceability 機能 : HotSpot Monitoring and Management Interface (JMM) : 各種 Platform MXBean クラスの処理 : スレッド毎のメモリ確保量の取得処理 (com.sun.management.ThreadMXBean.getThreadAllocatedBytes() の処理)


概要(Summary)

各 Thread オブジェクト内に Thread::_allocated_bytes というフィールドがあり, ここにそのスレッドが確保したメモリ量を記録している.

このフィールドは, メモリの確保処理時に以下の関数でインクリメントされている.

sun.management.ThreadImpl.getThreadAllocatedBytes() は, 単にそのフィールドの値を取得して返すだけ.

備考(Notes)

(なお, このメソッドは JSR-174 には存在しない Sun Microsystems の独自拡張機能)

処理の流れ (概要)(Execution Flows : Summary)

値の記録処理

(#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()

処理の流れ (詳細)(Execution Flows : Details)

Thread::incr_allocated_bytes()

See: here for details

MacroAssembler::incr_allocated_bytes()

(#Under Construction)

sun.management.ThreadImpl.getThreadAllocatedBytes(long id)

See: here for details

sun.management.ThreadImpl.getThreadAllocatedBytes(long[] ids)

See: here for details

Java_sun_management_ThreadImpl_getThreadAllocatedMemory1()

See: here for details

jmm_GetThreadAllocatedMemory()

See: here for details

Thread::cooked_allocated_bytes()

See: here for details


This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.