jvm相关参数及java内存调优常用命令方法

1、通过 jstat -gc pid interval 查看每次 GC 之后,具体每一个分区的内存使用率变化情况

2、通过jcmd pid VM.flags 就可以查看到jvm相关的设置参数

3、通过“jmap -heap 进程id”查询出 当前进程的JVM 的配置信息,其中就包括垃圾收集器的设置类型

4、查看 & 分析 GC 日志

首先,我们需要通过 JVM 参数预先设置 GC 日志,通常有以下几种 JVM 参数设置:

-XX:+PrintGC 输出 GC 日志
-XX:+PrintGCDetails 输出 GC 的详细日志
-XX:+PrintGCTimeStamps 输出 GC 的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出 GC 的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行 GC 的前后打印出堆的信息
-Xloggc:../logs/gc.log 日志文件的输出路径

eg:-XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:/log/heapTest.log

如果GC日志非常大,可以用GCViewer工具打开日志文件,图形化界面查看整体的 GC 性能,如下图所示:

也可以用GCeasy工具,并且还可以将日志文件压缩之后,上传到 GCeasy 官网即可看到非常清楚的 GC 日志分析结果

5、堆中年轻代和老年代的比例设置

在 JDK中,默认情况下年轻代和老年代的比例是 1:2,我们可以通过–XX:NewRatio 重置该配置项。

6、堆中年轻代的 Eden 和 To Survivor、From Survivor 的比例是设置

在 JDK中,默认情况堆中年轻代的 Eden 和 To Survivor、From Survivor 的比例是8:1:1,我们可以通过 -XX:SurvivorRatio 重置该配置项。

eg:-XX:SurvivorRatio=8 将 Eden、Survivor 的比例设置为 8:2

7、 -XX:+UseAdaptiveSizePolicy 配置项,JVM 将会动态调整 Java 堆中各个区域的大小以及进入老年代的年龄

ps1、通过 -XX:-UseAdaptiveSizePolicy 关闭该项配置

ps2、如果开启了 -XX:+UseAdaptiveSizePolicy 配置项,–XX:NewRatio 和 -XX:SurvivorRatio 将会失效,而 JDK1.8 是默认开启 -XX:+UseAdaptiveSizePolicy 的。

ps3、在 JDK1.8 中,不要随便关闭 UseAdaptiveSizePolicy 配置项,除非你已经对初始化堆内存 / 最大堆内存、年轻代 / 老年代以及 Eden 区 /Survivor 区有非常明确的规划了。否则 JVM 将会分配最小堆内存,年轻代和老年代按照默认比例 1:2 进行分配,年轻代中的 Eden 和 Survivor 则按照默认比例 8:2 进行分配。这个内存分配未必是应用服务的最佳配置,因此可能会给应用服务带来严重的性能问题。

8、调整某一个程序的堆内存空间

java -jar -Xms4g -Xmx4g heapTest-0.0.1-SNAPSHOT.jar

9、-XX:PetenureSizeThreshold

如果分配的对象内存超过了设置的阀值,会直接分配到老年代,这样做的好处就是可以减少新生代的垃圾回收。

原文地址:https://www.cnblogs.com/jetqiu/p/11735773.html

时间: 2024-08-07 09:20:07

jvm相关参数及java内存调优常用命令方法的相关文章

java内存调优常用命令

1. jps 列出运行的java进程信息 命令格式:jps [-qmlv] -q:指定只输出进程ID: -m:输出传给Java进程的参数: -l:输出主函数的完整路径: -v:显示传给JVM的参数: 2.jstat 用于观察Java应用程序运行时信息的工具,可以用它查看堆信息的详细情况 命令格式:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] option可以由以下值构

JVM监控和调优常用命令工具总结

JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了.本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考. jps Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便. 命令格式: jps [options] [hos

Android内存调优的一些方法

一.巧妙使用软引用和弱引用 软引用,系统内存紧张时会回收软引用对象,一般用用高速缓存,例如图片缓存,我们一般通过内存缓存图片来提高图片加载速度,但内存吃紧的时候可以通过软引用及时对图片资源回收. 弱引用,但对象没有强引用,只有弱引用时资源会在gc中被回收,具体要看系统gc的时机. 二.SparseArray代替HashMap SparseArray避开了自动装箱和压缩稀疏数组来节省内存.但在查找和插入等操作中使用二分法,效率上会稍慢,但数据量不大的情况下差别不明显.HashMap用hashcod

JVM实用参数(四)内存调优

JVM实用参数(四)内存调优 原文地址,译文地址,作者:PATRICK PESCHLOW,译者:郑旭东  校对:梁海舰 理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数.然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工作中得好伙伴.在这篇文章中,我们将介绍一些关于JVM内存管理的参数.知道并理解这些参数,将对开发者和运维人员很有帮助. 所有已制定的HotSpot内存管理和垃圾回收算法都基于一个相

tomcat完结篇,JVM状态监控与内存调优。

本篇合适对tomcat和JVM有一定了解的朋友. 常用的内置变量介绍: CATALINA_BASE  //用于设定可以具有写权限或者自定义部分的文件存放位置,适用场景,需要在一节点上启动多个tomcat实例,就可以定义多个CATALINA_BASE. CATALINA_OPTS //定义JVM的运行属性 JAVA_OPTS  //定义多个JVM相同运行属性. JAVA_HOME  //用于设定java或JDK运行时候的本地位置. JRE_HOME   //这是一个JAVA_HOME的别名. 了解

mysql内存参数整理和条调优以及内存统计

date:20140530auth:Jin 参考:http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html#http://dev.mysql.com/doc/refman/5.5/en/memory-use.htmlhttp://blog.csdn.net/wyzxg/article/details/7268122http://blog.csdn.net/wyzxg/article/details/7268175 *.

JVM学习笔记(四)------内存调优【转】

转自:http://blog.csdn.net/cutesource/article/details/5907418 版权声明:本文为博主原创文章,未经博主允许不得转载. 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提供的内存查看工具,比如JConsole和Java VisualVM. 对JVM内存的系统级的调优主要的目的是减少GC的频率和Fu

Java性能调优_深入Java程序性能调优(并行开发、JVM调优)

深入Java程序性能调优(阿姆达尔定律.缓存组件.并行开发.线程池.JVM调优)课程讲师:special课程分类:Java核心适合人群:初级课时数量:33课时更新程度:完成用到技术:阿姆达尔定律.缓存组件.并行开发.线程池.JVM调优涉及项目:模式在实际开发中运用深入Java程序性能调优下载: http://pan.baidu.com/s/1ntn0ZTB 密码: ijluJava性能调优:国内关于Java性能调优的课程非常少,如此全面深入介绍Java性能调优,北风算是独家,Special讲师,

了解java虚拟机&mdash;JVM相关参数设置(2)

1.   JVM相关参数设置 JVM相关配置 -XX:+PrintGC 两次次YoungGC,两次FullGC. -XX:+PrintGCDetails 打印GC时的内存,并且在程序结束时打印堆内存使用情况 -XX:+PrintHeapAtGC 每次GC时会分别打印回收前与回收后堆信息 -XX:+PrintGCTimeStamps 选择打印GC的方式后,再添加此参数.比如:-XX:+PrintGC -XX:+PrintGCTimeStamps 每次GC时会打印程序启动后至GC发生的时间戳. -X