據我所知,每個班級都有一個Class
的對象。還有一種情況,當我使用同步,例如:當JVM加載類A時,或者當我調用A.class時,是否創建了Class對象A?
public class A {
public static void main(String... args){
synchronize(A.class){
//do something...
}
}
}
這將鎖定A
的Class
對象,對不對?什麼時候創建了這個Class
對象?它是在JVM加載A
類時還是當我撥打A.class
時創建的?我無法在JLS中找到詳細信息,有人可以提供關於它的鏈接嗎?
嗨,彼得,也是同樣的問題,可以嗎? – Tony
@Tony一個類只有在類加載器是GC'ed時才能被GCed。這意味着類加載器的所有類的所有實例都不再被強引用。主/默認ClassLoader從不GC'ed。 –
謝謝,A a = new A(),我可以說a是A類的一個實例,但A的Class對象是誰的實例,如果它屬於A,我不認爲a = Class對象 – Tony