2011-03-14 69 views
1


我有一個類在java中的樣本。 它有兩個實例變量和一個方法來添加實例變量並打印總和。
我創建了兩個對象的Sample類。我很清楚這兩個對象都有自己的數據成員。 我必須知道,這兩個對象都有一個共同的方法副本,這兩個方法都使用或者他們在jvm中具有不同的副本。方法對於eact對象有不同的副本嗎?

+1

這是一個很好的問題,但爲什麼你*知道這個? – MAK 2011-03-14 05:30:46

回答

2

一般來說,JVM將指令與內存佈局中的數據分開,並且該對象引用方法的「代碼」。這意味着調用相同方法的兩個實例通常都會引用內存佈局中相同的「代碼」塊。

+0

如果兩個或多個對象同時使用相同的代碼塊,這是否意味着一個對象會先完成其工作,然後再使用第二個對象,或者兩個對象可能同時使用同一個代碼塊? – sjain 2011-03-14 06:07:29

+1

由於Java虛擬機不支持自修改代碼,因此代碼不可修改,因此沒有理由僅由一個線程獨佔使用代碼。 (它可以被Hotspot優化器修改,但你不必擔心這一點。) – 2011-03-14 12:22:05

1

該類由JVM加載一次。所以在內存中有一個共同的方法副本。

相關問題