Java - JVM及其调优
原文链接:https://blog.csdn.net/qq_27098537/article/details/124436788
一、什么是JVM
用于运行java代码,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。

二、JVM的位置

三、JVM的体系结构

堆(Heap)和非堆(Non-heap)
- 堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是Java虚拟机启动时创建的。
- 在jvm中堆之外的内存被称为非堆内存(Non-heap memory)
- 堆是java代码可及的内存,留给开发人员使用的。非堆是留给jvm自己用的。
四、JVM调优
-Xms 128M:设定最小堆的大小,当虚拟机启动后,会分配128M的堆内存。
-Xmx 512m:设定程序运行期间最大堆的内存大小,如果程序运行需要更多的内存,超过该值,会发生OOM。
-XX:PermSize=64M:JVM初始分配的非堆内存。
-XX:MaxPermSize=128M:JVM最大允许分配的非堆内存,按需分配。
-Xss:设定每个线程的堆栈大小。视程序而定,考虑一个线程需要占用多少内存,会有多少线程同时运行等。
以上参数设置单位默认为Byte,可在数字后加[k/K]表示千字节(KB),[m/M]表示兆字节(MB)
最小堆占满后,会进行GC,如果GC后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新对象就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,就会OOM。
— 要养成终生学习的习惯 —

浙公网安备 33010602011771号