内存结构

002_JVM内存结构及调优学习

陌路散爱 提交于 2019-11-27 20:11:18
1. 常遇到关于内存溢出的错误 java.lang包下 StackOverflowError 很少 OutOfMemoryError: heap space(堆空间) 比较常见 OutOfMemoryError: PermGen space 经常出现 2. Java虚拟机结构和属性 内存区域: 保存java类和对象的物理区域 堆: Java的内存区域叫做堆(heap) 堆被分成3个区域: 新域(young generation)、旧域(tenured generation)、永久域(perm generation) 标记为virtual的部分被保留下来,必要时才分配出去。 新域: 有Eden和两个救助空间survivor组成,新对象存放在Eden中 旧域: 对象在两个救助空间survivor之间移动,当它们足够"老",能够被移入到保存生存期较长对象的旧域 永久域: 在虚拟机的整个生存期都生存的对象 常用虚拟机配置选项属性 -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; -Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值; -Xmn Java Heap Young区大小,不熟悉最好保留默认值; -Xss 每个线程的Stack大小