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。
— 要养成终生学习的习惯 —
分类:
【吗喽的搬砖日常】 / Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?