[TOC]
## jmap
1. 安装
```
# 查看java版本
java -version
# 查看哪些rpm包提供jmap工具
yum -y whatprovides '*/jmap'
# 安装jmap
yum install -y java-1.8.0-openjdk-devel
```
2. 获取java程序的内存快照
```
jmap -dump:live,format=b,file=/root/jmaplogs/jmap-70892.bin 70892
```
live子选项是可选的,假如指定live选项,那么只输出活的对象到文件。
3. 安装Memory Analyzer
[下载地址](http://www.eclipse.org/mat/downloads.php)
## OOM
不要在线上使用jmap手动抓取内存快照,其一系统OOM时手工触发已经来不及,另外在生成dump文件时会占用系统内存资源,导致系统崩溃。只需要在JVM启动参数中设置如下参数,一旦OOM触发会自动生成对应的文件,用MAT分析即可。
```
# 内存OOM时,自动生成dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/
```
## GC
如果Young GC比较频繁,5S内有打印一条,或者有Old GC的打印,代表内存设置过小或者有内存泄漏,此时需要抓取内存快照进行分享。
可以在jvm启动参数中设置如下参数,打印gc日志
```
-Xloggc:/data/logs/gc.log
```
也可以通过jstat -gcutil pid 1000查看GC频率,1000表示1秒输出一次。
- CentOS运维手册
- CentOS6.9挂载额外的磁盘
- ACL(access control list)-权限控制
- 普通用户不能绑定80端口
- ssh8.1p1编译步骤
- 制作openssh8_1的rpm包
- 离线yum源维护
- 去除VIM中打开文件里有的^M字符
- Mysql运维手册
- CentOS6.9搭建Mariadb-Galera集群
- mysql编码报错
- haproxy代理mysql galera
- 常用sql
- MySQL通用知识点
- 修复断电损坏的MySQL数据表
- sync_binlog配置的分析
- Xtrabackup备份与恢复
- Innodb线程并发同步机制
- redo log
- 死锁分析
- 慢SQL分析
- nginx运维手册
- nginx日志分割
- proxy_set_header作用
- nginx优化
- url末尾不加/
- 负载均衡
- haproxy和nginx研究
- haproxy配置
- redis运维手册
- redis_5.0.8集群搭建
- Redis集群原理分析
- predixy的安装和配置
- redis优化
- NFS运维手册
- flock操作失败
- mongodb运维手册
- MongoDB开启用户认证
- shell编码规范
- HTTP
- HTTP的传输编码
- 性能分析
- java内存分析
- javaCPU分析