成员变量,类变量,类方法、静态代码块存储位置

成员变量,类变量,类方法、静态代码块、普通代码块、构造方法的存储位置
,网上搜的都千篇一律,没什么讲的特别透彻的,求解?

就一个秘诀,占用内存小的,都是在栈里,占用内存大的都是在堆里,字符串都在常量池里,记住这三点,基本没有问题。

Jvm的内存大概分为三个,分别是堆内存、栈内存以及方法区。在类加载的过程中,所有的非静态成员和静态成员会分别加载到JVM的方法区中,静态变量的赋值以及静态构造代码块会先执行,也就是静态代码块是存储在方法区中的。在创建对象的时候,非静态成员会被加载堆内存中,并完成成员变量的赋值初始化。也就是说所有的非静态成员(包括成员变量、成员方法、构造方法、构造代码块、普通代码块)是保存在堆内存中的,但是方法调用的时候,调用的方法会在栈内存中执行,构造代码块也会在栈内存中执行。

http://blog.csdn.net/u010425776/article/details/45748379?ref=myread
这篇还可以,看了还算明白,就是差个图一类的东西,有了就更好了