码迷,mamicode.com
首页 > 其他好文 > 详细

JVM

时间:2021-02-25 11:53:46      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:main方法   arc   gif   bsp   使用   aci   最大   struct   lines   

一、JAVA HEAP内存空间

Memory structure Of a JVM process

技术图片

java堆内存空间分为:

新生代
  新生区(Eden):初创对象
  存活区(Survivor):步入成熟期的初创对象
    ss1: 
    ss2:
老年代
  mark --> compact
持久代

垃圾回收期:

新生代回收:
  Minor GC
老年代回收:
  Major GC(FULL GC)

堆内存空间的调整参数:

-Xmx: 新生代和老年代总共可用的最大空间
-Xms: 新生代和老年代初始空间之和;
-XX:NewSize 新生代初始空间
-XX:MaxSize 新生代的最大空间

-XX:MaxPermSize 持久代最大空间
-XX:PermSize 持久代初始空间
对tomcat而言:    
  catalina.sh中有两个环境变量:
    CATALINA_OPTS:仅对启动运行tomcat实例的java虚拟机有效
    JAVA_OPTS:对本机上的所有java虚拟机有效

我们可以在shell中:
  export CATALINA_OPTS="Xmx256m"

二、JAVA性能监控工具

java常见问题:

OutofMemoryError: 内存不足;
内存泄露
线程死锁
锁竞争(Lock Contention)
java消耗过多的CPU

常用工具:

jps:java virtual machine process status tool,监控jvm进程状态信息

jps [options] [hostid]
  -m: 输出传入main方法的参数
  -l: 显示main类或jar的完全限定名称
  -v: 显示为jvm虚拟机指定的参数

jstack: 查看某个java进程内的线程堆栈信息

jstack [options] pid
  -l: 输出完整的锁信息
  -m: 混合模式,即会输出java堆栈及C/C++堆栈信息

jmap和jhat:
jmap:  jvm memory map, 查看堆内存使用情况
jhat: java heap analysis tool

jmap [options] pid
  -heap: 详细输出堆内存空间使用状态信息
  -histo[:live]:查看堆内存中的对象数目、大小统计结果

jstat:jvm统计监测工具

jstat <option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
其中<option>为必须提供的选项,所有可用选项可使用jstat -options列出
  -class
  -compiler
  -gc
  -gccapacity
  -gccause
  -gcmetacapacity
  -gcnew
  -gcnewcapacity
  -gcold
  -gcoldcapacity
  -gcutil
  -printcompilation
字段意义:
  S0C, S1C, S0U, S1U: C表示容量,U表示已用量
  EC, EU: eden区域的容量和已用量
  OC, OU: 老年代区域的容量和已用量
  PC, PU: 持久代区域的容量和已用量
  YGC, YGT: 新生代的GC次数和耗时
  FGC,FGCT:FULL GC的次数和耗时
  GCT: GC总耗时

另外还有两个GUI工具: jconsole, jvisualvm

 

JVM

标签:main方法   arc   gif   bsp   使用   aci   最大   struct   lines   

原文地址:https://www.cnblogs.com/ckh2014/p/14442367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!