一般大家了解的就是heap和stack了,日常接触得到的 异常也是针对这两个的
具体的来说,stack是jvm为每个线程划分的一块区域,还有线程共享区域
stack是有深度的也就是大小限制,如果程序调用的方法层次过深则就有可能触发 out of stack
这里可以针对系统的具体情况去设置这块区域的大小
heap则分为 年轻代,老年代和持久代
主要是根据对象的存活时间而定的,短期的就是年轻代,gc采用的复制算法,gc比较频繁,但是gc速度很快
存活时间较长就进入了老年代,等老年代空间不足时会触发gc,或者fullgc时也会释放一些对象
持久代则就是存放一些类定义和方法定义之类的东西,gc很少,只有fullgc时才会参与到,一般使用默认值即可,除非系统情况特殊,需要加载非常多的类,在进行设定。