JVM学习笔记

JVM参数

  1. -Xms: 指定堆的初始值
  2. -Xmx: 指定堆的最大值
  3. -Xss: 指定线程栈的大小。默认值为1MB
  4. -Xmn: 指定年轻代的大小
  5. -Xnoclassgc: 禁止对类的垃圾回收
  6. -XX:PermSize=: 指定永久代的初始值(在Java 8以后被废弃)
  7. -XX:MaxPermSize=: 指定永久代的最大值(在Java 8以后被废弃)
  8. -XX:MaxMetaspaceSize=: 指定元空间的最大值(Java 8以后的代替形式)
  9. -XX:MetaspaceSize=: 指定元空间的初始值(Java 8以后的代替形式)
  10. -XX:SurvivorRatio=: 指定新生代中eden区和survivor区的大小比例
  11. -XX:MaxTenuringThreshold=: 指定对象晋升到老年代的年龄阈值
  12. -XX:+DisableExplicitGC: 禁用对System.gc()方法的响应
  13. -XX:+UseG1GC: 启用G1垃圾收集器
  14. -XX:+UseConcMarkSweepGC: 启用CMS垃圾收集器
  15. -XX:ParallelGCThreads=: 指定并行垃圾收集器的线程数
  16. -XX:ConcGCThreads=: 指定CMS垃圾收集器的并发线程数
  17. -XX:CompileThreshold=: 指定方法被调用多少次之后才进行编译
  18. -XX:+HeapDumpOnOutOfMemoryError: 在出现内存溢出错误时,自动生成堆转储文件
  19. -XX:HeapDumpPath= : 指定堆转储文件的输出路径
  20. -XX:+PrintGC: 打印GC的详细信息
  21. -XX:+PrintGCDetails: 打印GC的详细信息,包括GC前后的堆大小、GC耗时等信息
  22. -XX:+PrintGCDateStamps: 带时间戳输出GC信息
  23. -XX:+PrintGCTimeStamps: 带时间戳输出GC耗时
  24. -XX:+PrintHeapAtGC: 在每次GC之后打印堆的信息
  25. -XX:+PrintClassHistogram: 打印当前JVM中的类信息
  26. -XX:PrintCommandLineFlags: 打印JVM启动时使用的参数列表
  27. -XX:+TraceClassLoading: 显示类加载信息
  28. -XX:+TraceClassUnloading: 显示类卸载信息
  29. -XX:+TraceClassResolution: 显示类解析信息
  30. -XX:+PrintCompilation: 在每次JIT编译时输出编译详情
  31. -XX:+PrintInlining: 在每次JIT编译时输出内联信息
  32. -XX:+PrintAssembly: 在每次JIT编译时输出汇编代码

注意事项:JVM的完整参数列表取决于你所使用的JVM版本和具体实现。不同的JVM实现可能会有一些特定的参数,因此建议查阅对应版本的JVM文档。一些常用的参数可以通过命令行传入,例如java -Xmx2048m -Xms1024m -jar app.jar等,也可以通过JAVA_TOOL_OPTIONS环境变量指定。、

JVM调优经历记录

  1. 元空间内存泄漏
while (true) {
     SerializeConfig config = new SerializeConfig();
     config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
     String s = JSON.toJSONString(test5, config);
}
其中,SerializeConfig是fastjson中的类

在这里插入图片描述

上述代码频繁调用会创建代理对象,导致元空间被打满,最后触发FullGC;

Java元空间(Metaspace)是Java 8以后代替永久代(PermGen)的一种新的内存区域。Java元空间使用的是本地内存而不是JVM内部的堆内存,因此它的垃圾回收与堆内存的垃圾回收方式不同。

Java元空间是基于操作系统的虚拟地址空间进行管理的。如果元空间中的类或符号表达到了操作系统默认的最大虚拟内存限制,将会触发Full GC。这个上限参数可通过-XX:MaxMetaspaceSize进行设置,默认值为UNLIMITED,意味着Java虚拟机将会使用系统的最大容量作为元空间的上限。除非应用程序大量使用反射、动态生成类等高程度使用Java元空间的行为,否则默认配置下,元空间不太可能出现Full GC。如果发生Full GC,一般建议增加元空间的最大容量设置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值