嗨
我有一個類在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. javascript將對象方法傳遞給不同的對象方法
- 3. 創建對象的方法只適用於單例對象嗎?
- 4. 對數組的深度或淺度副本克隆方法嗎?
- 5. 有一個對象的副本而不是一個鎖定的對象
- 6. 在Delphi 2007中製作TRemotable對象副本的強大方法
- 7. 通過作爲方法參數傳遞對象的副本
- 8. 爲什麼對象的方法不可用於其他對象?
- 9. 反映實際對象的Java本地對象副本
- 10. .NET中的對象 - 對象映射有哪些不同的方法?
- 11. java方法同步對象
- 12. 靜態方法應該對每個對象有相同的結果嗎?
- 13. 對於null對象有方法返回值是否有用?
- 14. 製作另一個對象內的對象的副本。 JAVASCRIPT
- 15. 爲什麼某些對象方法的聲明不同於其他對象方法
- 16. 如何使用不同的引用創建同一對象的副本?
- 17. OOP不同的對象需要運行不同的方法(Java)
- 18. 對象副本和原始副本的實例變量
- 19. HashSet包含對象的副本
- 20. 如何創建對象的副本?
- 21. 2d對象數組的深層副本
- 22. Java:返回對象的副本
- 23. 創建包裹對象的副本
- 24. 派生python對象的深層副本
- 25. 如何製作對象的副本
- 26. 如何製作JavaScript對象的副本?
- 27. 如何返回對象的副本?
- 28. 同一個對象的兩種不同的同步方法?
- 29. 我是否在更改該對象的對象或副本?
- 30. 刪除核心數據中的對象(類似對象/副本)
這是一個很好的問題,但爲什麼你*知道這個? – MAK 2011-03-14 05:30:46