jdk8及以上版本GC配置
备注:以下为2G内存配置,可根据实际情况做调整
# 最大堆大小
-Xmx2048m
# 初始堆大小
-Xms2048m
# 年轻代大小
-Xmn1024m
#每个线程栈大小,JDK5.0以后每个线程堆栈大小为1M。
-Xss512k
# Eden区与Survivor区的大小比值,设置为8,则两个Survivor区与一个Eden区的比值为2:8,一个Survivor区占整个年轻代的1/10
-XX:SurvivorRatio=8
# 使用 G1 (Garbage First) 垃圾收集器
-XX:+UseG1GC
#设置垃圾收集暂停时间最大值指标,默认值:4294967295 。这是一个软目标,Java虚拟机将尽最大努力实现它
-XX:MaxGCPauseMillis=200
# 提升年老代的最大临界值(tenuring threshold). 默认值为 15[每次GC,增加1岁,到15岁如果还要存活,放入Old区]
# -XX:MaxTenuringThreshold=14
# 设置垃圾收集器在并行阶段使用的线程数[一般设置为本机CPU线程数相等,即本机同时可以处理的个数,设置过大也没有用]
-XX:ParallelGCThreads=8
# 并发垃圾收集器使用的线程数量
-XX:ConcGCThreads=8
# 设置堆内存保留为假天花板的总量,以降低提升失败的可能性. 默认值是 10.
# -XX:G1ReservePercent=10
# 使用G1时Java堆会被分为大小统一的的区(region)。此参数可以指定每个heap区的大小. 默认值将根据 heap size 算出最优解. 最小值为 1Mb, 最大值为 32Mb
# -XX:G1HeapRegionSize=n
# 指定整个堆的使用率达到多少时, 执行一次并发标记周期, 默认45, 过大会导致并发标记周期迟迟不能启动, 增加FullGC的可能, 过小会导致GC频繁, 会导致应用程序性能有所下降
# -XX:InitiatingHeapOccpancyPercent=n
# 设置Matespace内存大小的参数
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512M
# 禁止在启动期间显式调用System.gc()
-XX:+DisableExplicitGC
# OOM时导出堆到文件
-XX:+HeapDumpOnOutOfMemoryError
# 导出OOM的路径
-XX:HeapDumpPath=d:/a.dump
# 打印GC详细信息
-XX:+PrintGCDetails
# 打印CG发生的时间戳
-XX:+PrintGCTimeStamps
# 每一次GC前和GC后,都打印堆信息
-XX:+PrintHeapAtGC
# 监控类的加载
-XX:+TraceClassLoading
# 按下Ctrl+Break后,打印类的信息
-XX:+PrintClassHistogram
作者:JackpotHan
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下