32
在eclipse中的對象值附近顯示對象標識時調試。jvm中的Java對象標識
例如:28332是會話對象的ID。 此ID既不是哈希碼也不是System.identityHashCode
。
有誰知道 - 如何獲取對象的這個ID?
在eclipse中的對象值附近顯示對象標識時調試。jvm中的Java對象標識
例如:28332是會話對象的ID。 此ID既不是哈希碼也不是System.identityHashCode
。
有誰知道 - 如何獲取對象的這個ID?
我假定它們內部的IdentityHashMap<Object, Integer>
有,分配每個對象的唯一的(但無意義否則)整數。這應該是eclipse調試器的內部(不是對象具有的特殊ID),您是否在問如何解決這個問題?
編輯:我會設置一個斷點這樣的(請注意,我沒有很好地蝕精通):
System.identityHashCode(object)
。System.identityHashCode(object) == <whatever number you saw at the previous step>
斷點。這種情況很少會停止在錯誤的對象上。或者,如果你有興趣到對象具有適當toString()
表示可以使用,你也可以嘗試,而不是System.identityHashCode(object)
。在所有情況下,您不必依賴eclipse的內部對象id,而是捕獲可以從對象本身派生的「id」(或幾乎)。
一般 - 我調試應用程序,並想在過程運行時收集一些信息,有關對象有時 - 停止在破發點,並獲得有關哪些對象的路徑信息通過函數調用... – Gorbush 2010-07-20 11:53:40
+1我覺得這是正確的,這些數字似乎由Eclipse調試器在內部進行分配和跟蹤,比實際的JVM對象標識符更容易閱讀和識別。 – skaffman 2010-07-20 11:54:56
我也覺得他們來自http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html#uniqueID%28確實由Eclipse調試器實現%29。 – Redlab 2010-07-20 12:03:57