根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。
其实最需要Java程序员关注的是堆,栈,还有方法区,因为啊:
- 如果代码又问题的话,可能回出现栈溢出
- 然后说说方法区,在Oracle的Java虚拟机(hotspot)中方法区的一个实现是永久代,永久代是非堆内存。但是呢,在部分jdk1.7中有永久代之说,这个永久代主要是方法区,在1.8就没有永久代这个实现了。
- 上面一直说永久代。是因为Java的堆内存(放对象的地方,所有new 出来的对象,包括数组都放在这里)分了三部分:新生代+老年代+永久代,但是呢,永久代不是堆内存,而是非堆内存。也就是是说:堆内存=新生代+老年代。
新生代=Eden+survivor
survivor=from + to
http://blog.csdn.net/antony9118/article/details/51425581 (为啥有两个survivor?)
关于比值问题?