第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

程序員知識圖譜-Java 內存溢出的排查方法

標簽:
Java

内存溢出分类

Java 里面内存溢出主要分以下几种:

堆溢出

1、内存溢出(无法申请到内存)
jstat 查看内存使用情况,检查堆参数,一般是申请的内存太大,比如一个特别大的 byte 数组

2、内存泄漏(对象无法回收)
可以使用 MAT 工具里面的 Path to GC Roots 定位,一般是一个特大不能回收的对象

栈溢出

  1. StackOverflowError
    方法调用层次太深,内存不够新建栈帧,比如一个没有结束条件的递归
  2. OutOfMemoryError
    线程太多,内存不够新建线程

MetaSpace 数据区溢出

动态生成大量 Class

本地直接内存溢出

申请一个大的直接内存

数据超限内存溢出

分配的数据结构在此平台不可寻址

排查方法

JDK 自带命令

jstat -gcutil 33816 250 20 # 监控 jvm 的内存使用情况
jps -ml # 输出虚拟机启动时传递给主类 main() 的参数,输出主类的全名
jmap -F -dump:live,format=b,file=dump.bin 85962 # dump 堆内存
# 分析方法
# 可以使用 VisualVM,主要查看是否存在大对象,然后分析为什么没有被回收
jstack -F -l -m 85962 # 显示虚拟机快照
jstack -l PID >> test.txt
jmap -histo pid # 实时查看JVM对象大小的排序结果,但无法看到对象的具体内容

Arthas

# 找到最耗CPU的方法
thread -n 5
# 观察方法的返回
watch com.test.MyClass query returnObj
# 反编译类
jad com.test.MyClass
# 监控调用情况
monitor -c 5 com.test.MyClass query
# 查看分段的调用时间
trace com.test.MyClass query
# 查看方法完整的调用链
stack com.test.MyClass query
# 记录调用现场
tt -t com.test.MyClass query

参数检查

-Xms 初始堆大小
-Xmx 最大堆大小
-Xmn 新生代大小
XX:MaxMetaSpaceSize 元数据区大小
Survivor Eden与Survivor区的大小比值
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消