2014-01-22 38 views
2

中提到:Calculate size of Object in JavaNPE調用getObjectSize時()

我試着運行這個程序,並獲得物體的大小產生

//main 
while(true){ 
     Integer x=new Integer(50); 
     System.out.println("HashCode of this object="+x.hashCode()+" 
        , with Size of "+ObjectSizeFetcher.getObjectSize(x)); 
     i++; 
} 

The output -- NullPointerException is thrown when getObjectSize() is invoked. 

    new Integer() --> 

應該已經創建了一個新的包裝對象。相反,它創造了NPE。爲什麼?

Java版本 「1.6.0_65」 蘋果OSX - 10.9.1 - 忽略語法錯誤

+1

'ObjectSizeFetcher'要求它作爲代理運行。有關詳細信息,請參閱http://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html。 – SamYonnou

+2

你有沒有按照[這個答案](http://stackoverflow.com/a/52682/1343161)中的所有步驟? – Keppil

+0

@SamYonnou - 錯過了設置的基本:) – user1428716

回答

1

由於靜態場ObjectSizeFetcher.instrumentationnull當你叫ObjectSizeFetcher.getObjectSize(x)

您應該在之前調用方法ObjectSizeFetcher.premain(String args, Instrumentation inst),並使用非空inst參數。