public class Test {
private String name; public static void main(String args[]) {
Test test = new Test();
}
}
我想知道,在程序编译期间.JVM都执行什么了. 给成员变量name分配空间了吗.是分配在栈上面的吗. new是在运行期间才动态分配内存吧.在编辑期间new是不是不执行.那么.程序运行期间才执行new 才有的对象.那么,对象的属性是在编辑期间就初如化了,而对象是要堆中的.那面对象的这个name属性是如何从栈中跑到堆中去的,这只是我的猜测.....
private String name; public static void main(String args[]) {
Test test = new Test();
}
}
我想知道,在程序编译期间.JVM都执行什么了. 给成员变量name分配空间了吗.是分配在栈上面的吗. new是在运行期间才动态分配内存吧.在编辑期间new是不是不执行.那么.程序运行期间才执行new 才有的对象.那么,对象的属性是在编辑期间就初如化了,而对象是要堆中的.那面对象的这个name属性是如何从栈中跑到堆中去的,这只是我的猜测.....
只有在程序执行的时候,真正的运行代码。
对象的产生是在堆上的,包括他的 实例对象,也就是name应该产生在堆上的。
你在方法中生命的变量才是在栈上产生的~
将静态的属性,方法放到池里
将你定义的基本类型和引用分配栈空间,如果有定义对象,并实例化的话,会在栈中分配该对象引用的空间,并在堆分配对象的空间 至于怎么处理方法不知到java中引用和基本类型都在栈中,对象在堆中,原则上没有索引指向的对象会被垃圾回收,有时候可能不是这样的。