2009-04-15 41 views
14

要調試JVM中的類加載,我們可以使用參數-verbose:class,但是......任何人都知道如何調試資源加載(例如屬性文件)?如何調試JVM資源加載?

回答

3

我想你需要看看使用探查器。或者使用儀器接口的東西。

不知道它有多穩定,但有BTrace,這是一種DTrace的Java版本。

BTrace是一個用於Java平臺的安全動態跟蹤工具。 BTrace可用於動態跟蹤正在運行的Java程序。 BTrace動態地測試目標應用程序的類以注入跟蹤代碼(「字節代碼跟蹤」)。跟蹤代碼用Java編程語言表示。

如果你在開發機器上這樣做,並且事件數量(被加載的資源)不是太頻繁,你也可以在調試器中設置一個斷點。

+0

鏈接是死 – 2015-09-29 06:32:27

+0

@FastSnail:看來他們轉移到Github上。鏈接已更新。 – Thilo 2015-09-29 10:38:10

2

資源提供爲URL s。所以,我想在「純」Java中執行它:安裝一個自定義ClassLoader,將URL複製到具有自定義URLStreamHandler的版本中。將您的監控代碼放入流處理程序並轉發給原始代碼。

1

在Linux環境中,你可以嘗試:

lsof -p <jvm pid> 

它會給你通過與指定的PID相關聯的程序中使用的描述符列表。

More Info

2

你可以使用InTrace儀器類加載器類裏面做加載。

對於Sun JVM,我會建議使用以下包含模式追查適當的類:

  • 的ClassLoader
  • URLClassPath
  • 裝載機