簡體   English   中英

jvm中的Java對象ID

[英]Java object ID in jvm

在調試時,Eclipse中的對象值附近顯示了一個對象ID。

例如:28332是會話對象的ID。 另一個例子: waiting for: (id=101)顯示在Debug面板中。 這些ID既不是哈希碼也不是System.identityHashCode

有誰知道 - 如何獲得this對象的id?

我假設他們內部有一個IdentityHashMap<Object, Integer> ,為每個對象分配一個唯一的(但無意義的)整數。 這應該是Eclipse調試器的內部(不是對象具有的特殊id)。 你在問這個怎么樣?

編輯 :我會設置這樣的斷點(注意我不熟悉Eclipse):

  • 我會有一個初始斷點(就像你用來截取屏幕截圖的斷點),然后打印我感興趣的對象的System.identityHashCode(object)
  • 然后我將使用條件System.identityHashCode(object) == <whatever number you saw at the previous step>創建斷點。 這種情況很難停在錯誤的物體上。

或者,如果您感興趣的對象具有您可以使用的適當的toString()表示,您也可以嘗試使用它而不是System.identityHashCode(object) 在所有情況下,您不必依賴Eclipse的內部對象id,而是捕獲可以從對象本身派生的id (或幾乎)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM