注:
1.本地方法栈和虚拟机栈并非所有的JVM都有区分,不是强制规定,HotSpot中本地方法栈和虚拟机栈是合在一起的;
2.方法区不等于永久代,HotSpot使用永久代来实现方法区,但在其他的JVM中并不适用;
3.一般来说,对象实例和数组都在堆上分配但是不是绝对的.随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一下微妙的变化.参考深入JVM虚拟机,参考hollischuang大神的文章:对象和数组并不都是在堆上分配内存的;
4.堆内存 = 新生代(1/3) + 老年代(2/3);新生代 = Eden + from survivor + to survivor.
5.永久代属于HotSpot,JDK1.8废弃了永久代,取而代之的是Metaspace(元空间),元空间使用的是直接内存,不使用虚拟机内存;
6.在HotSpot中字符串常量池在jdk1.8由原来的方法区(永久代)转移到java堆中.