嗨
我有一個類在java中的樣本。 它有兩個實例變量和一個方法來添加實例變量並打印總和。
我創建了兩個對象的Sample類。我很清楚這兩個對象都有自己的數據成員。 我必須知道,這兩個對象都有一個共同的方法副本,這兩個方法都使用或者他們在jvm中具有不同的副本。方法對於eact對象有不同的副本嗎?
1
A
回答
2
一般來說,JVM將指令與內存佈局中的數據分開,並且該對象引用方法的「代碼」。這意味着調用相同方法的兩個實例通常都會引用內存佈局中相同的「代碼」塊。
+0
如果兩個或多個對象同時使用相同的代碼塊,這是否意味着一個對象會先完成其工作,然後再使用第二個對象,或者兩個對象可能同時使用同一個代碼塊? – sjain 2011-03-14 06:07:29
+1
由於Java虛擬機不支持自修改代碼,因此代碼不可修改,因此沒有理由僅由一個線程獨佔使用代碼。 (它可以被Hotspot優化器修改,但你不必擔心這一點。) – 2011-03-14 12:22:05
1
該類由JVM加載一次。所以在內存中有一個共同的方法副本。
相關問題
- 1. C++類的函數對於所有對象只有一個副本嗎?
- 2. 有沒有辦法通過對象的副本而不是參考Java方法
- 3. 階副本對象
- 4. javascript將對象方法傳遞給不同的對象方法
- 5. 同一對象(C++)的多個副本:線程安全嗎?
- 6. 創建對象的方法只適用於單例對象嗎?
- 7. 創建對象的副本
- 8. 獲取對象的副本
- 9. 對象_.deepClone,不等於舊對象嗎?
- 10. 對數組的深度或淺度副本克隆方法嗎?
- 11. 對象的等於方法
- 12. 等於方法False對於同一個對象
- 13. 有一個對象的副本而不是一個鎖定的對象
- 14. Java:使用add方法創建對象的副本?
- 15. 訪問器方法中的對象副本
- 16. 通過作爲方法參數傳遞對象的副本
- 17. 在班級方法中創建並返回對象的副本
- 18. 在Delphi 2007中製作TRemotable對象副本的強大方法
- 19. 對於不同的測試方法
- 20. 爲什麼對象的方法不可用於其他對象?
- 21. Clojure,對不同Java對象的相同方法調用
- 22. 方法同步vs對象同步有什麼不同?
- 23. C++對象的地圖本地副本
- 24. 反映實際對象的Java本地對象副本
- 25. .NET中的對象 - 對象映射有哪些不同的方法?
- 26. 靜態方法應該對每個對象有相同的結果嗎?
- 27. 在不同對象中使用不同對象的屬性方法
- 28. java方法同步對象
- 29. 對象對象沒有方法
- 30. C++ - 初始化不同線程擁有的對象的兩個副本
這是一個很好的問題,但爲什麼你*知道這個? – MAK 2011-03-14 05:30:46