生产环境调优2 (内存溢和死循环,死锁);通过JVisualVM监控本地和远程

1.4Jmap+MAT实战内存溢出

start.spring.io快速建立一个工程  

制造两个内存溢出 一个堆的一个非堆的

While(true){

List.add(new user)

}

List<Class> 创建很多个 class

While(true){

List.add(class)

}

1.5如何导出内存映像文件

c和java相反的 一个是指针丢了 一个是指针一直不释放

  1. 内存溢出自动导出

-xx:+HeapDumpOnOutOfMemoryError

-xx:HeapDumpPath=./

2.使用jmap 命令手动导出

Cmd下面 cd Desktop

下载地址https://www.eclipse.org/mat/downloads.php

jmap  -dump:format=b,file=heap.hprof pid

//写在本地idea中参数

 -Xmx32M -Xms32M  -XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=./

然后用分析软件打开看就行

Jmap -heap 16940

1.6Jstack实战死循环和死锁

如果cpu飙高可能是出现 死循环和死锁问题

 

 

Jstack  pid >xxx.txt

sz  下载

top  -p pid -H

转成10进制: printf “%x” 8247  2037

//错误格式的   在文件里找2037

死循环问题  多个请求时候都会卡在一个方法,

 

死锁问题 可以直接拉到 jstack 最后会有分析结果

死循环分析:

Jstack pid  >xxx.txt 查看这个 txt

Top -p pid H 展示运行的线程 找

Printf “%x” 8247  16进制  

然后 去txt文件里找

死锁分析:

Jstack pid  >xxx.txt 查看这个txt

直接到文件最末尾

2.1基于JVisualVM的可视化监控

1主要内从

监控tomcat  本地和远程.

也可以做内存溢出或者死锁cpu高的分析

监控java进程

安装插件地址

https://visualvm.github.io/pluginscenters.html

本地jdk 下的工具

  1. 远程连接的话 修改Catalina.sh

就是通过操作JVisualVM里的各种图形化页面,操作查看问题,可以dump 堆 cpu 等看到现在存在的问题

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值