3
如何確定一個單一的,特定的類定義(而不是實例化對象)有多大?具體而言,給定類使用多少PermGen內存?如果無法計算,它與未壓縮的.class文件的文件系統大小相對應的粗略程度如何?確定PermGen空間中單個Java類定義的大小?
我讀過Jon Masamitsu,什麼PermGen的成立:
- 一個Java類的基本領域 類(包括字節碼)類的
- 名稱的
- 方法(形式指向字符串也永久代的對象)
- 常量池信息(從類文件中讀取數據的,看到的所有細節JVM規範的第4章)。與類關聯
- 對象陣列和類型陣列(例如,包含的方法的引用的對象陣列)。
- 由JVM(Java /郎/對象或Java例如/郎/異常)
- 由編譯器(即時編譯器)用於優化的信息創建的內部對象
最後兩個可能不與個人階級定義有關。其餘的我感興趣。
唯一可能的逼近,我發現是java.lang.instrument.Instrument.getObjectSize(myObject.getClass());但「一些或全部」的描述讓我比準確性充滿信心少。有任何想法嗎?我覺得我正在俯視簡單的事情。
的類是基礎類的一個代理。它不會讓你知道類有多大,而序列化JPanel會告訴你它在屏幕上使用了多少內存。 –