通常Java有三种编译方式,编译方式不同,那么得到的.class的大小也不同。
1)默认编译方式:javac A.java
2) 调试编译方式: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文件大小分别为:
默认编译方式:322字节
调试编译方式:453字节
代码编译方式:238字节
三种编译方式对应的.class文件的内容,分别如下:
默认编译方式:代码(Code)、源文件信息(SourceFile Infomation)、代码行序列表(LineNumberTable)。
调试编译方式:代码(Code)、源文件信息(SourceFile Infomation)、代码行序列表(LineNumberTable)、本地变量表(LocalVariableTable)。
代码编译方式:代码(Code)。
由于javac -g:none A.java这种方式编译的内容最少,所以.class占用的空间也就最小。
由于javac -g A.java这种方式编译的内容最多,所以.class占用的空间也就最大。
而javac A.java这种方式编译的内容居中,所以.class占用的空间也就居中。