Skip to content

☕ Supported the development team with training for Hotspot JVM

Notifications You must be signed in to change notification settings

KyrieChang/kbase-heap

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JVM 浅析和线上系统性问题分析思路

JVM内存模型

JVM内存模型

JVM如何判断对象是否可回收

引用计数器

GC Roots

GC算法

标记-清除算法

复制算法

标记-整理算法

分代回收算法

GC回收器

Serial收集器

PerNew收集器

Parallel Scavenge收集器

Serial Old收集器

Parallel Old收集器

CMS收集器

G1收集器

JVM常用配置

内存相关

-Xmn
-Xms
-Xmx
-XX:PermSize
-XX:MaxPermSize
-Xss
-XX:SurvivorRatio=5

回收器相关

-XX:+UseParNewGC 
-XX:+CMSParallelRemarkEnabled 
-XX:+UseConcMarkSweepGC

GC日志相关

-XX:+PrintGCDetails
-XX:+HeapDumpOnOutOfMemoryError

其他

详见 JVM系列三:JVM参数设置、分析

线上系统性问题分析思路和常用命令

  • df –lh 查询磁盘大小,请重视linux挂载点概念

磁盘大小

  • free –g/-m 查询内存大小

  • netstat –an|grep CLOSE_WAIT –c 查询等待关闭连接数,详细指令如下:

      netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    
  • ulimit -a / ulimit -u 102400 / ulimit -n 102400

  • top

      Shift+p 按CPU占用率倒序
      Shift+m 按内存占用率倒序
    
  • top –H –p pid 通过指定的进程id查看线程id,可以查看到具体哪些线程CPU占用率飙高,将线程id转成16进制,可以在cpu100.txt中找到对应的线程信息

  • /home/xiaoi/java/jdk/bin/jstack pid > /tmp/xiaoi/cpu100.txt

  • /home/xiaoi/java/jdk/bin/jstat –gcutil pid 3000

  • /home/xiaoi/java/jdk/bin/jmap -heap pid

IBM J9 VM

详见 垃圾收集策略,第 1 部分 垃圾收集策略,第 2 部分

JRockit

/home/Oracle/Middleware/wlserver_12.1/common/bin/commEnv.sh
/home/Oracle/Middleware/user_projects/domains/srcb/bin/setDomainEnv.sh

About

☕ Supported the development team with training for Hotspot JVM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%