jvmti

    0熱度

    1回答

    我想知道是否可以使用JVMTI在Java中動態檢測死鎖。有兩個事件使用synchronized聲明顯示在監視器上操作: 監視器爭鳴輸入 發送當線程試圖進入一個Java編程語言監視器已經被另一個線程獲得。 監視器爭進入 當一個線程在等待被另一線程釋放後進入Java編程語言監視器發送。 這意味着,與JVMTI我只能看到那些已經鎖定的顯示器。我想重建一個等待圖,但沒有事件表明我,獲得的鎖是而不是由任何線

    1熱度

    1回答

    使用由JVMTI提供的MethodEntry和MethodExit事件掛鉤如何測量在Java中執行的方法的時間? 簡單的說就是:time2 - time1但是我看到的問題,如何區分不同的方法?有一個methodID,但遞歸調用呢?打開方法後何時關閉? 我應該比較堆棧跟蹤嗎?什麼是有意義的數據結構來追蹤進入的方法?喜歡的東西Map<StackTrace,Time>?

    1熱度

    2回答

    我正在嘗試創建一個工具,可以捕獲由java程序所做的所有讀取和寫入操作。另外,我想知道訪問/修改什麼對象的哪些字段。 我目前看: - 1)的java.lang.instrument 我不能做很多這一點。我無法理解如何編寫能夠訪問正在運行的程序的代理,並在不同的對象/字段和相關的任何內容上創建監視。如果您對此有任何想法或信息,我將不勝感激。 2)JVMTI 我看着JVMTI,並試圖建立一個JVMTI

    2熱度

    1回答

    自一週以來我試圖編譯JVMTI演示集的演示版本。在這種情況下,我嘗試編譯HeapViewer源代碼(我剛將文件HeapViewer.c重命名爲HeapViewerByMG)。我嘗試了不同的編譯器和使用的主要有以下代碼,我在計算器上找到,太: // compile with Microsoft Windows C++ compiler set JAVA_HOME="C:\Program Files

    3熱度

    3回答

    編寫性能分析我也將執行堆性能分析的典型任務。具體我想跟蹤,哪個線程已經分配了多少數據?使用JVMTI我認爲這是足夠的鉤到事件VM對象分配和對象免費。可悲的是,我讀到的第一個事件是由於撥打new而引發的。 我最後的想法是檢查事件MethodExit如果它的名字是<init>並且因此將此調用聲明爲對象分配。但是,在這個事件中,我無法獲得該對象,因此我無法調用GetObjectSize。 只是遍歷堆,不

    0熱度

    1回答

    當觸發方法入口或方法出口事件時是否可以檢索當前jobject?我想標記用特定方法輸入的工作對象。目前我只能檢索定義類的方法,而不能檢索對象。 在JVMTI API我沒有發現任何類似的東西。 我可以遍歷堆中方法definining類的所有實例,但是,這並不會告訴我有關哪個對象完全調用該方法的任何信息。

    6熱度

    1回答

    lsof是Unix的一個很好的工具,顯示當前打開的所有文件句柄。 有誰知道一個類似的工具,可以顯示正在運行的JVM中的所有打開的文件(通過JVMTI或任何類似的接口)? 在這種特殊情況下,我知道哪個類的句柄已打開就足夠了。方法/行,甚至整個鏈到GC根將是太棒了,但處理程序所有者類已經是一個好的開始。 我知道我可以做一個堆轉儲,在一個探查器中打開它並找出它,但這是一項單調乏味的任務,尤其是對於大堆。

    2熱度

    1回答

    我記錄了來自我的Java應用程序的所有方法條目,這要歸功於JVMTI代理程序。現在,我可以獲取每個方法的名稱,但我希望能夠獲取該方法接收的參數的值。 此問題已在舊主題中討論過(請參閱How to get parameter values in a MethodEntry callback);它完全符合我所需要的,所以我知道我必須使用GetLocalObject函數,但我無法弄清楚如何(在主題中給出

    2熱度

    1回答

    我試圖通讀整個jvmti文檔,我沒有找到解決我的問題的方法。 我想那就是在命令行中使用調用程序的類/文件的名稱: java -agentpath:<pathToAgent> <calledJavaProgram> 在上情況下,我想< calledJavaProgram的名稱>。我只是在參數列表中設置了「klass」的名字,但是自從我啓動程序後,我甚至不知道這個......對嗎? 是否有(其他)

    0熱度

    1回答

    我正在尋找一些Microsoft API,它們應該具有與JVMTI對Java應用程序一樣的監視.ENT應用程序的相同功能。 例如,我希望能夠看到每個方法調用和所花費的時間(我可以使用JVMTI在我的Java應用程序上執行此操作)。感謝您的幫助。