程序员都应该知道的JVM参数
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参数相关推荐
- 使用Mono平台前,请牢记产品观点(所有.Net程序员都建议知道的)
技术领域有很多让人深感困惑的地方,不管是架构师.设计师还是程序员,在完成任务之余,偶尔都有自责的地方:程序员在使用新技术完成任务的时候,有时会觉的自己旧技术都没有完全掌握,使用新技术有些好高骛远:设计 ...
- 每个程序员都应该知道的10件事!
如果你已经编程了一段时间,并且想学习编程,那么你可能在想什么才是一个好的程序员?计算机科学与技术专业毕业生能做些什么,来为软件开发职业生涯做准备? 在本文中,我将分享10件我认为每个程序员都应该知道的 ...
- 每个程序员都应该知道的GitHub Repos
GitHub是领先的Git存储库托管服务,其中包含许多代码存储库,库等的源代码. 在本文中,我将为每个开发人员介绍GitHub存储库从播客到免费书籍再到学习路线图 1.Awesome Resource ...
- 一文了解程序员必须要知道的JVM和性能优化知识点
目录 JVM和性能优化 1.Java内存区域 虚拟机的历史 未来的Java技术一览 运行时数据区域 站在线程角度来看堆和栈 深入辨析堆和栈 方法的出入栈 虚拟机中的对象 堆参数设置和内存溢出实战 2. ...
- 每个程序员都必须知道的 8 种数据结构
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 快速介绍8种数据结构 数据结构是一种特殊的组织和存储数据的方式,可 ...
- 每个程序员都应该知道的8个Linux命令
为什么80%的码农都做不了架构师?>>> 摘要:Linux里有很丰富的各种命令,有些是很难用的.然而,学会了前面说的这8个命令,你已经能处理大量的log分析任务了,完全不需要用 ...
- 网优谷程序员都需要知道的8个冷知识
想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门小知识! 01 第一台电脑为蒸汽驱 ...
- 程序员都需要知道的8个冷知识
" 想要成为一名成功的程序员,我们除了了解不同编程语言的设计思路,也应当了解编程的发展历史,从而判断未来的编程技术将走向何方.接下就为大家普及下计算机发展历程中的8个冷门小知识! " ...
- 优秀的程序员都应当知道的11个警句
1. 技术只是解决问题的选择,而不是解决问题的根本 我们可以因为掌握了最新的 JavaScript 框架 ahem.Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些 ...
最新文章
- 检测含有中文字符串的实际长度
- Unet实现图像分割(四)
- 如何解决Connect超时导致的阻塞问题
- php调用接口接口代码无法执行,php调用c接口无错版介绍
- “多态枚举”数值如何判断?
- asiHttpRequst 学习地址
- 为对象添加方法mothod
- 29岁博士获聘教授具有导向意义
- 通过实例看懂diff命令输出
- 【Java数据结构与算法】第六章 算法的时间复杂度、算法的空间复杂度和排序算法的介绍
- Confluence 6 数据中心的 SAML 单点登录最佳实践和故障排除
- java excel 打勾_如何在excel中打钩
- RuntimeError: mat1 dim 1 must match mat2 dim 0
- 冲向2021 荣耀“无限”创新
- 未来几年,谁能拯救手机拍照功能?
- SCAR:Scalable Consensus Algorithm一种可伸缩共识算法
- 雷电3菊链功能_雷电三接口小科普,看完再说你是否需要雷电三!
- SIMULIA现实仿真解决方案 SIMULIA仿真模拟应用程序
- flutter下载慢
- 使用计算机计算一个多边形,计算机几何基础,计算多边形的面积, HDU-2036
热门文章
- 泉州中考分数如何计算机,2019年泉州中考总分多少分,泉州中考各个科目多少分...
- kettle全量抽数据_漫谈数据平台架构的演化和应用
- TensorFlow自编码器(AE)实战
- UVA12003 Array Transformer(数组分块)
- dp背包九讲(待补充,暂时前两讲)
- Common Subsequence 1159 hdu
- cad等比例缩放快捷键_「CAD」利用块对图形进行非等比例缩放
- QTP中对数据库的操作(查询,更新和删除等)
- 哪怕你不认可,我还是要为R语言正名
- 使用Flutter一年后,这是我得到的经验