編寫性能分析我也將執行堆性能分析的典型任務。具體我想跟蹤,哪個線程已經分配了多少數據?使用JVMTI我認爲這是足夠的鉤到事件VM對象分配和對象免費。可悲的是,我讀到的第一個事件是由於撥打new
而引發的。使用JVMTI跟蹤線程感知堆分配
我最後的想法是檢查事件MethodExit如果它的名字是<init>
並且因此將此調用聲明爲對象分配。但是,在這個事件中,我無法獲得該對象,因此我無法調用GetObjectSize
。
只是遍歷堆,不知道哪個對象是由哪個線程分配的。有沒有人有一個想法如何實現這一點?
不,因爲我正在寫一個我自己的通用JVM分析器。儘管感謝您對此進行研究+1這只是證實了我的懷疑。 – 2011-06-16 02:00:57