通常
Java有三種編譯方式,編譯方式不同,那么得到的.class的大小也不同。
1)默認(rèn)編譯方式:javac A.java
2) 調(diào)試編譯方式:javac -g A.java
3) 代碼編譯方式:javac -g:none A.java
案例如下:類A
public class A{ public static void main(String args[]){ for(int i=0;i<100000;i++){ A a = new A(); } } } |
通過上面這三種編譯方式,得到的.class文件大小分別為:
默認(rèn)編譯方式:322字節(jié)
調(diào)試編譯方式:453字節(jié)
代碼編譯方式:238字節(jié)
三種編譯方式對應(yīng)的.class文件的內(nèi)容,分別如下:
默認(rèn)編譯方式:代碼(Code)、源文件信息(SourceFile Infomation)、代碼行序列表(LineNumberTable)。
調(diào)試編譯方式:代碼(Code)、源文件信息(SourceFile Infomation)、代碼行序列表(LineNumberTable)、本地變量表(LocalVariableTable)。
代碼編譯方式:代碼(Code)。
由于javac -g:none A.java這種方式編譯的內(nèi)容最少,所以.class占用的空間也就最小。
由于javac -g A.java這種方式編譯的內(nèi)容最多,所以.class占用的空間也就最大。
而javac A.java這種方式編譯的內(nèi)容居中,所以.class占用的空間也就居中。