Trace跟踪参数

1.-verbose:gc

2.-XX:+printGC

可以打印GC的简要信息 [GC 51790K->1374K(115872K), 0.0001606 secs]

3.-XX:+PrintGCDetails(打印GC详细信息)

4.-XX:+PrintGCTimeStamps(打印CG发生的时间戳 )

[GC[DefNew: 6716K->0K(4528K), 0.0007 secs] 8790K->374K(15872K), 0.0002232 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] - 5.-XX:+PrintGCDetails的输出

6.-Xloggc:log/gc.log (制定GC的输出位置)

7.-XX:+PrintHeapAtGC(每次一次GC后,都打印堆信息)

8.-XX:+TraceClassLoading (打印class的加载) 9.-XX:+PrintClassHistogram(按下Ctrl+C后,打印类的信息)

堆的分配参数

1.-Xmx –Xms(指定最大堆和最小堆)

 System.out.print("Xmx=");System.out.println(Runtime.getRuntime().maxMemory()/1024.0/1024+"M");System.out.print("free mem=");System.out.println(Runtime.getRuntime().freeMemory()/1024.0/1024+"M");System.out.print("total mem=");System.out.println(Runtime.getRuntime().totalMemory()/1024.0/1024+"M");

2.-Xmn(设置新生代大小)

3.-XX:NewRatio

新生代(eden+s0+S1)和老年代(不包含永久区)的比值。

这个值其实是年老代与年轻代的比值,-XX:NewRatio=4表示年老代与年轻代的比值为4:1 即年轻代占堆的1/5

4.-XX:SurvivorRatio

设置两个Survivor区和eden的比8表示 两个Survivor:eden=2:8,即一个Survivor占年轻代的1/10(会有一个s空置) 为什么需要两个s区?

堆的分配参数

1.-XX:+HeapDumpOnOutOfMemoryError (OOM时导出堆到文件)

2.-XX:+HeapDumpPath(导出OOM的路径)

-Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump

3.-XX:OnOutOfMemoryError

在OOM时,执行一个脚本 "-XX:OnOutOfMemoryError=D:/tools/jdk1.7_40/bin/printstack.bat %p“ 当程序OOM时,在D:/a.txt中将会生成线程的dump 可以在OOM时,发送邮件,甚至是重启程序

非堆的分配参数

1.-XX:PermSize(表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存))

2、-XX:MaxPermSize(表示对非堆区分配的内存的最大上限)

方法区和运行时常量

3.-Xss 栈内存大小

4.-XX:MaxDirectMemorySize 直接内存大小 不指定默认和堆的Xmx一样大小。

总结

根据实际事情调整新生代和幸存代的大小

官方推荐新生代占堆的3/8

幸存代占新生代的1/10

在OOM时,记得Dump出堆,确保可以排查现场问题

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

程序员都应该知道的JVM参数相关推荐

  1. 使用Mono平台前,请牢记产品观点(所有.Net程序员都建议知道的)

    技术领域有很多让人深感困惑的地方,不管是架构师.设计师还是程序员,在完成任务之余,偶尔都有自责的地方:程序员在使用新技术完成任务的时候,有时会觉的自己旧技术都没有完全掌握,使用新技术有些好高骛远:设计 ...

  2. 每个程序员都应该知道的10件事!

    如果你已经编程了一段时间,并且想学习编程,那么你可能在想什么才是一个好的程序员?计算机科学与技术专业毕业生能做些什么,来为软件开发职业生涯做准备? 在本文中,我将分享10件我认为每个程序员都应该知道的 ...

  3. 每个程序员都应该知道的GitHub Repos

    GitHub是领先的Git存储库托管服务,其中包含许多代码存储库,库等的源代码. 在本文中,我将为每个开发人员介绍GitHub存储库从播客到免费书籍再到学习路线图 1.Awesome Resource ...

  4. 一文了解程序员必须要知道的JVM和性能优化知识点

    目录 JVM和性能优化 1.Java内存区域 虚拟机的历史 未来的Java技术一览 运行时数据区域 站在线程角度来看堆和栈 深入辨析堆和栈 方法的出入栈 虚拟机中的对象 堆参数设置和内存溢出实战 2. ...

  5. 每个程序员都必须知道的 8 种数据结构

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 快速介绍8种数据结构 数据结构是一种特殊的组织和存储数据的方式,可 ...

  6. 每个程序员都应该知道的8个Linux命令

    为什么80%的码农都做不了架构师?>>>    摘要:Linux里有很丰富的各种命令,有些是很难用的.然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用 ...

  7. 网优谷程序员都需要知道的8个冷知识

    想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门小知识! 01 第一台电脑为蒸汽驱 ...

  8. 程序员都需要知道的8个冷知识

    " 想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门小知识! " ...

  9. 优秀的程序员都应当知道的11个警句

    1. 技术只是解决问题的选择,而不是解决问题的根本 我们可以因为掌握了最新的 JavaScript 框架 ahem.Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些 ...

最新文章

  1. 检测含有中文字符串的实际长度
  2. Unet实现图像分割(四)
  3. 如何解决Connect超时导致的阻塞问题
  4. php调用接口接口代码无法执行,php调用c接口无错版介绍
  5. “多态枚举”数值如何判断?
  6. asiHttpRequst 学习地址
  7. 为对象添加方法mothod
  8. 29岁博士获聘教授具有导向意义
  9. 通过实例看懂diff命令输出
  10. 【Java数据结构与算法】第六章 算法的时间复杂度、算法的空间复杂度和排序算法的介绍
  11. Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
  12. java excel 打勾_如何在excel中打钩
  13. RuntimeError: mat1 dim 1 must match mat2 dim 0
  14. 冲向2021 荣耀“无限”创新
  15. 未来几年,谁能拯救手机拍照功能?
  16. SCAR:Scalable Consensus Algorithm一种可伸缩共识算法
  17. 雷电3菊链功能_雷电三接口小科普,看完再说你是否需要雷电三!
  18. SIMULIA现实仿真解决方案 SIMULIA仿真模拟应用程序
  19. flutter下载慢
  20. 使用计算机计算一个多边形,计算机几何基础,计算多边形的面积, HDU-2036

热门文章

  1. 泉州中考分数如何计算机,2019年泉州中考总分多少分,泉州中考各个科目多少分...
  2. kettle全量抽数据_漫谈数据平台架构的演化和应用
  3. TensorFlow自编码器(AE)实战
  4. UVA12003 Array Transformer(数组分块)
  5. dp背包九讲(待补充,暂时前两讲)
  6. Common Subsequence 1159 hdu
  7. cad等比例缩放快捷键_「CAD」利用块对图形进行非等比例缩放
  8. QTP中对数据库的操作(查询,更新和删除等)
  9. 哪怕你不认可,我还是要为R语言正名
  10. 使用Flutter一年后,这是我得到的经验