资讯专栏INFORMATION COLUMN

JVM信息查看

shixinzhang / 1204人阅读

摘要:系列垃圾回收基础的编译策略的三大基础算法的三大高级算法策略的评价指标信息查看通用日志解读的数据结构类初始化顺序对象结构及大小计算的类加载机制对象分配简要流程年老代过大有什么影响空间溢出实例关于线程与序本文主要讲述如何查看应用的信息。

jvm系列

垃圾回收基础

JVM的编译策略

GC的三大基础算法

GC的三大高级算法

GC策略的评价指标

JVM信息查看

GC通用日志解读

jvm的card table数据结构

Java类初始化顺序

Java对象结构及大小计算

Java的类加载机制

Java对象分配简要流程

年老代过大有什么影响

Survivor空间溢出实例

关于Object=null

Java线程与Xss

本文主要讲述如何查看java应用的jvm信息。

1、查看所有参数 jinfo -flags pid

Java -XX:+PrintCommandLineFlags 这个参数的作用是显示出VM初始化完毕后所有跟最初的默认值不同的参数及它们的值。 (JDK5以上支持)

-XX:+PrintFlagsFinal显示所有可设置的参数及它们的值( JDK 6 update 21开始才可以用),默认是不包括diagnostic或experimental系的。要在-XX:+PrintFlagsFinal的输出里看到这两种参数的信息,分别需要显式指定-XX:+UnlockDiagnosticVMOptions / -XX:+UnlockExperimentalVMOptions

-XX:+PrintFlagsInitial看下所有XX参数的默认值,也可以通过-XX:+PrintFlagsFinal进行对比出修改过的参数,当然通过-XX:+PrintCommandLineFlags就可以自动显示出修改过的值

jinfo -flags pid

[xixicat@cloud01 ~]$ jps 
9275 Jps
22855 start.jar
22869 XmlConfiguration
20967 Application
[xixicat@cloud01 ~]$ jinfo -flags 22869
Attaching to process ID 22869, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 23.21-b01
-javaagent:/opt/xixicat/apps/lib/jolokia-jvm-1.1.0-agent.jar=port=23061 -Xloggc:/var/xixicat/logs/app.gc.log.201504301631 -XX:ErrorFile=/var/xixicat/logs/app.vmerr.log.201504301631 -XX:HeapDumpPath=/var/xixicat/logs/app.heaperr.log.201504301631 -Xmx5g -Xms5g -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+PrintCommandLineFlags -XX:+PrintAdaptiveSizePolicy -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:StringTableSize=49999 -Djetty.home=/opt/xixicat/apps/server/jetty-distribution-8.1.9.v20130131 -Dapp.port=8061 -Dmedis_environment=online -Dcore.step=app -DSTOP.PORT=38061 -Djetty.port=8061 -Dcom.sun.management.jmxremote.authenticate=false -Dapp.logdir=/var/xixicat/logs -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector -Dapp.ip=10.64.28.207 -Dapp.context -Dcom.sun.management.jmxremote.ssl=false -Djetty.context -Djava.io.tmpdir=/tmp -Djetty.host=cloud01 -Djava.net.preferIPv6Addresses=false -DSTOP.KEY=stop_app -Dcore.zookeeper=127.0.0.1:9331 -Djetty.logs=/var/xixicat/logs -Dapp.workdir=/opt/xixicat/apps/app/work -Dapp.key=app -Dfile.encoding=UTF-8 -Dapp.host=cloud01 -Duser.timezone=GMT+08 -Djetty.appkey=app -DAsyncLogger.WaitStrategy=Block -Dcom.sun.management.jmxremote.port=8199 -Djetty.home=/opt/xixicat/apps/server/jetty-distribution-8.1.9.v20130131 -Denvironment=online
2、查看可用jinfo -flag修改的Java参数

java -XX:+PrintFlagsFinal -version |grep manageable
通过选项-XX:+PrintFlagsFinal可以列出所有的JVM flag,而其中的标注为manageable 的flag则是值得我们关注的部分。这些flag可通过JDK management interface(-XX:+PrintFlagsFinal)动态修改。

-XX:+PrintGCDetails

jinfo -flag -PrintGCDetails 12278

3、jmap -heap pid 查看目前堆情况
[xixicat@cloud01 ~]$ jmap -heap 22869
Attaching to process ID 22869, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 23.21-b01
using thread-local object allocation.
Garbage-First (G1) GC with 4 thread(s)
Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 5368709120 (5120.0MB)
   NewSize          = 1363144 (1.2999954223632812MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5452592 (5.1999969482421875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 20971520 (20.0MB)
   MaxPermSize      = 268435456 (256.0MB)
   G1HeapRegionSize = 2097152 (2.0MB)
Heap Usage:
G1 Heap:
   regions  = 2560
   capacity = 5368709120 (5120.0MB)
   used     = 3826721792 (3649.4462890625MB)
   free     = 1541987328 (1470.5537109375MB)
   71.27824783325195% used
G1 Young Generation:
Eden Space:
   regions  = 1068
   capacity = 2808086528 (2678.0MB)
   used     = 2239758336 (2136.0MB)
   free     = 568328192 (542.0MB)
   79.76101568334578% used
Survivor Space:
   regions  = 29
   capacity = 60817408 (58.0MB)
   used     = 60817408 (58.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation:
   regions  = 1000
   capacity = 2499805184 (2384.0MB)
   used     = 1524048896 (1453.4462890625MB)
   free     = 975756288 (930.5537109375MB)
   60.96670675597735% used
Perm Generation:
   capacity = 171966464 (164.0MB)
   used     = 170752872 (162.8426284790039MB)
   free     = 1213592 (1.1573715209960938MB)
   99.29428565792921% used
48213 interned Strings occupying 5246936 bytes.
4、jmap -histo:live pid | head -7

查看对象分布

5、jcmd pid VM.flags
[xixicat@cloud01 ~]$ jcmd 15308 VM.flags
15308:
-XX:+DisableExplicitGC -XX:ErrorFile=/var/xixicat/logs/app.vmerr.log.201505071655 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/xixicat/logs/app.heaperr.log.201505071655 -XX:InitialHeapSize=5368709120 -XX:+ManagementServer -XX:MaxGCPauseMillis=100 -XX:MaxHeapSize=5368709120 -XX:MaxPermSize=268435456 -XX:+PrintAdaptiveSizePolicy -XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:StringTableSize=49999 -XX:+UnlockExperimentalVMOptions -XX:+UseCompressedOops -XX:+UseG1GC 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65623.html

相关文章

  • jvm调优

    摘要:一内存调优主要的目的是减小的频率和的次数。调优工具之主要用来输出中运行的进程状态信息。调优工具之和用来查看堆内存使用状况,一般结合使用。 一、jvm内存调优 主要的...

    snowLu 评论0 收藏0
  • 面试官问我JVM调优,我忍不住了!

    面试官:今天要不来聊聊JVM调优相关的吧?面试官:你曾经在生产环境下有过调优JVM的经历吗?候选者:没有面试官:...候选者:嗯...是这样的,我们一般优化系统的思路是这样的候选者:1. 一般来说关系型数据库是先到瓶颈,首先排查是否为数据库的问题候选者:(这个过程中就需要评估自己建的索引是否合理、是否需要引入分布式缓存、是否需要分库分表等等)候选者:2. 然后,我们会考虑是否需要扩容(横向和纵向都...

    不知名网友 评论0 收藏0
  • JVM 堆(heap)溢出案例

    摘要:一说明当虚拟机申请不到内存空间的时候,会报堆内存溢出。记录次数不让进程结束,便于使用分析工具来查看内存情况使用的版本报错信息运行结果表明,运行到次时,出现了堆内存溢出。 一、说明 当虚拟机申请不到内存空间的时候,会报堆内存溢出: OutOfMemoryError:java heap space。 常见的原因:http://outofmemory.cn/c/java-... 我测试到时...

    leejan97 评论0 收藏0
  • jvm调优-命令篇

    摘要:打印等待回收对象的信息可以看到当前队列中并没有等待线程执行方法的对象。一般情况,会到客户端用工具来分析用于生成虚拟机当前时刻的线程快照。 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使...

    Lsnsh 评论0 收藏0
  • 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具

    摘要:虚拟机性能监控与故障处理工具详解概述本文参考的是周志明的深入理解虚拟机第四章,为了整理思路,简单记录一下,方便后期查阅。虚拟机堆转储快照分析工具功能用于分析生成的。 虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 《深入理解Java虚拟机》 第四章 ,为了整理思路,简单记录一下,方便后期查阅。 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的Vis...

    gself 评论0 收藏0

发表评论

0条评论

shixinzhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<