Java程序运行的时候,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区,类的各种信息都在方法区中保存,而new是初始化对象,将对象放入堆内存中
“经过解析后将其装入方法区,类的各种信息都在方法区中保存”这句话的意思是已经加载到内存当中去了?也就是说方法区也是在内存当中?那方法区和内存堆又有什么区别?
在编写代码的时候,只是编译,只有当程序运行的时候才会被加载到内存当中
1,编译器,编译代码(calss文件)!
2,当你某一个类执行的时候,被调用到了(何种方式调用这里不做考虑),那就是加载内存当中的时候!
从程序运行的角度来看,每个java虚拟机对一个类只初始化一次。java程序每运行一次,系统只为类变量分配一次内存。new 是堆内存空间中为实体分配内存。而类是在静态存储空间的。