Posted on 2009-11-02 14:31
瘋狂 閱讀(768)
評論(0) 編輯 收藏 所屬分類:
java
對于被裝載的每個類,虛擬機都會把這個類的類型信息存儲在方法區,方法區中存儲一下信息:eg: public class Test extends superclass implements interface1, interface2
1, 類的全限定名
2, 類的超類的全限定名
3, 這個類是類型還是接口
4, 類的訪問修飾符
5, 超接口的權限定名的有序類表
6, 該類的常量池,
該類型所使用常量的一個有序集合,包括直接類型和對其他類的,字段和方法的符號引用。
7, 字段信息
字段名,字段類型,字段的修飾符(eg:private String field)
8, 方法信息
方法名,方法的返回信息,方法的修飾符(eg:public void method),如果一個方法不是抽象的和本地的還將保存一下信息:方法的字節碼,操作數棧和方法的棧幀中的局部變量的大小,異常表
9, 除了常量以外的所有類變量
類變量是多有類實例共享的,但是沒有類實例也可以訪問,只與類有關,編譯時常量
10, 一個到classLoader的應用
11, 一個到class類的引用
12, 方法表(為了盡可能的提高訪問效率,大部分虛擬機對每個裝載的費抽象類,都生成一個方法表,把他們當做類型信息放在方法去類。)
方法區同樣可以被垃圾回收。