作者: zhaosenyang 时间: 2012-8-10 00:00
1、java文件是在编译后就会将.class文件加载到内存中吗?类中的静态成员也会一起加载到内存中?
不是,JVM从main函数开始执行,只有在用到某个class文件的时候才会加载。static修饰的静态成员是跟类有关的,随着类的加载而加载,随类的消失而消失。
2、加入代码中有Person t = new Person(),程序执行到这句的时候是才会在栈内存中开辟空间存放t,在堆内存中开辟空间存放new Person()吧,那假如Person类中还有类似的语句:Stutent s = new Student();在内存中的存放是啥样的?
加载Person类的时候,这个类里面需要用到Student类,那么也会跟着加载到内存中,它的执行过程同样是一个对象的实例化过程。s在栈,newStudent()在堆。