java 内存存储

全局变量包含在类对象中,因为所有的对象都在堆上生成,所以全局变量是随对象放在堆上的。
但,方法中的局部变量就不一样了,它们被放在方法栈的栈帧中(注意,如果在方法中生成对象,该对象一样在堆中创建,不过引用该对象的引用变量是放在栈帧中的)

所有的对象都是在堆上创建(Class对象除外),即使是在方法中创建的对象也是这样。

每一个线程都有自己独立的栈和程序记数器,所有线程都共享方法区和堆!

静态变量放在方法区中。每个类都有一个对应的Class对象,静态变量放在它所属的类的Class对象中。Class对象放在方法区中。也就是说,静态变量也被放在方法区了。

如果静态变量是一个引用变量,它引用某个对象,那么这个对象仍然生成在堆上,只不过这个引用变量随Class对象放在方法区。

你可能感兴趣的:(java)