Java虚拟机具有一个堆,是运行时的数据区域,所有类实例和数组内存均从此处分配.堆是在java虚拟机启动时创建的. 堆是留给开发人员用的内存区域.非堆就是JVM留给自己用的(方法区,JVM内部处理或优化所需的内存,运行时的常量池,字段方法数据等). JVM初始分配的内存由-Xms指定,默认为物理内存的1/64:JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4. 默认空余堆内存小于40%时,JVM会增大到-Xmx的最大限制:空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制.…