-
Notifications
You must be signed in to change notification settings - Fork 19
JvmPerformance
目录 start
目录 end|2020-08-03 01:00|
-
xxfox
Jvm参数辅助工具
-server
-Xms600m # 最小堆
-Xmx600m # 最大堆 配成一样是为了避免扩容
-Xmn256m # 新生代
-XX:MetaspaceSize=350m # 只是一个阈值, 达到该阈值才进行 GC
-XX:MaxMetaspaceSize=350m # 最大值
-Xnoclassgc
-Xverify:none # 不进行字节码校验
-XX:+AggressiveOpts # 激进式优化
-XX:ReservedCodeCacheSize=320m # 编译时代码缓存 IDEA 警告不能低于240M
参考: Java’s -XX:+AggressiveOpts: Can it slow you down?
参考: JVM参数MetaspaceSize的误解
堆外内存堆外内存主要是JNI、Deflater/Inflater、DirectByteBuffer(nio中会用到)使用的。
都是jdk的bin目录下的工具
java [-options] -jar jarfile [args...]
- 传入
java -Dkey=true -jar xxx.jar
- -D 参数 要前于 -jar
- 获取
System.getProperty("key", "defaultvalue");
执行含main方法的类
java -cp jarfile[:jarfile2] className
主要用来输出JVM中运行的进程状态信息
- option:
- -q 忽略输出的类名、Jar名以及传递给main方法的参数,只输出pid。
- -m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。
- -l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。
- -v 输出传给JVM的参数。
- -V 输出通过标记的文件传递给JVM的参数(.hotspotrc文件,或者是通过参数-XX:Flags=指定的文件)
-
option:
- -gcutil 统计heap的gc情况
- -t 在第一列输出时间戳。该时间戳从jvm启动开始
- -h3 每隔N行输出一次列表头
- $PID 进程号
- interval 输出间隔时间,单位毫秒
- count 输出次数
-
Demo:
jstat -gcutil -t -h5 7919 1000 50
观察运行中的 java 进程的运行环境参数:参数包括 Java System 属性和 JVM 命令行参数
- Demo:
- jinfo 14352
- jinfo -sysprops 14352
- jinfo -flags 14352
- jinfo -flag MaxPermSize 14352
用来查看堆内存使用状况
- Demo:
- jmap -histo $PID 展示class的内存情况
- jmap -heap $PID 展示Java堆详细信息
- jmap -dump:live,format=b,file=heapLive.hprof 2576
Java Head Analyse Tool
用于分析 jmap 转储出来的堆文件, 分析完后启动一个WebServer 通过浏览器查看
jstack [option] pid 主要用来查看某个Java进程内的线程堆栈信息
-
Option:
- -F: 强制产生一个线程dump
- -m: 打印java和native frames
- -l: 打印关于锁的附加信息
-
找出占用CPU最高的线程:
-
jps 或者 ps aux | grep xxx
得到想要的Java进程id -
top -Hp 进程id
查看 time 占用最长 或者 CPU占用最高 的线程 -
printf %x 线程id
得到 16进制 线程id -
jstack 进程id | grep -A 20 16进制线程id
查看该线程的栈,进而分析到代码
-
Github: Arthas
阿里巴巴
vjtools
唯品会
参考: java内存泄漏的定位与分析 使用 VisualVM 进行性能分析及调优
参考: JVisualVM简介与内存泄漏实战分析
Local
-
Remote
-
通常使用两种方式连接远程JVM: JMX jstatd
-
jmx
-
jstatd
- vim jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
- jstatd -J-Djava.security.policy=jstatd.all.policy -p 12028 -J-Djava.rmi.server.logCalls=true
- open jvisualvm create a remote with jstatd by above port 12028
- vim jstatd.all.policy
-
Memory Analyzer tool(MAT) | Official Site
参考: JAVA Shallow heap & Retained heap
参考: 利用MAT分析JVM内存问题,从入门到精通
Official Doc: OQL Syntax
他的 OQL 比较方便, 像写 SQL 一样去查询对象
注意: 有这样的一种场景, 从数据库获取大量的数据创建为对象, 导致瞬间的OOM 这时候即使使用 jmap 去 dump 了快照, 也看不到占用大量内存的对象, 很有可能这些对象就是gc不可达的, 而mat只能分析可达对象
-
【 Algorithm 】
-
【 Blog 】
-
【 C 】
-
【 Database 】
-
【 Distributed 】
-
【 FrontEnd 】
- 【 FrontEnd/Frame 】
- 【 FrontEnd/Node 】
- Font
- Hexo
- JavaScript
- LearnPS
- ResponseCode
- SVG
- ViewSolution
- extjs学习笔记
-
【 Functional 】
-
【 Go 】
-
【 Groovy 】
-
【 Java 】
- 【 Java/AdvancedLearning 】
- 【 JavaBasic 】
- 【 JavaCache 】
- 【 JavaCollection 】
- 【 JavaConcurrency 】
- 【 JavaMap 】
- Annotation
- ClassFile
- Collection
- Concurrency
- Deploy
- Exception
- ExtendsAndInterface
- Generics
- IO
- JDBC
- JDKAndJRE
- JMX
- JVM
- Java11
- Java7
- Java8
- JavaNetwork
- JavaReleaseVersion
- JavaWeb
- JvmPerformance
- MQ
- MultipleLanguage
- Proxy
- Reflection
- Serialize
- SyntaxAndType
- Thread
- WebPerformance
- 【 Java/Android 】
- 【 Java/Ecosystem 】
- 【 Java/MSA 】
- 【 Java/Spring 】
- 【 Java/TemplateEngine 】
- 【 Java/Test 】
- 【 Java/Tool 】
- 【 Java/thread 】
- AlibabaJavaStandard
- DesignPattern
- HashMap解析
- Java-NIO
- Java虚拟机
- Log
- MIS
- Quartz
- RESTful
- WebSocket学习笔记
- ZooKeeper学习笔记
- android学习笔记
- 【 Java/AdvancedLearning 】
-
【 Kotlin 】
-
【 Linux 】
- 【 Linux/Alpine 】
- 【 Linux/Arch 】
- 【 Linux/Base 】
- 【 Linux/Centos 】
- 【 Linux/Container 】
- 【 Linux/Debian 】
- 【 Linux/Tool 】
- JavaDevInit
- Linux系统学习
-
【 MyBlog 】
-
【 Python 】
- 【 Python/Tool 】
- Python
- PythonConcurrent
- PythonGUI
- PythonGame
- PythonNet
- PythonOffices
- PythonWeb
- Python基础
- Python核心学习
-
【 Reactive 】
-
【 Rust 】
-
【 Scala 】
-
【 Script 】
-
【 Skills 】
- 【 Skills/Application 】
- 【 Skills/CS 】
- 【 Skills/Cache 】
- 【 Skills/Councurrency 】
- 【 Skills/DevOps 】
- 【 Skills/Document 】
- 【 Skills/Ecology 】
- 【 Skills/Network 】
- 【 Skills/Search 】
- 【 Skills/SoftwareEngineering 】
- 【 Skills/Spider 】
- 【 Skills/Test 】
- 【 Skills/Vcs 】
- 【 Skills/Work 】
- AppManual
- CelebrityQuotes
- Miscellaneous
- Platform
- Problem
- Protobuf
- RegularExpression
- SoftwareDesignEngineer
- Website
-
【 Windows 】