所有面试题均来自真实面试:(暂时不提供答案,实在不确定可以私聊~,也可以联系加入前后端模拟面试沟通群)
聊聊实用技能
JVM调优 : 调优主要目的 ,优化FGC 。思想:尽量在年轻代把资源回收掉。避免大量对象进入老年代
JPS 找java 进程号 查找死锁
JMAP -HISTO 进程号 >输出文件目录
JMAP -HEAP 进程号 查堆的配置信息
JAMP -DUMP 导出DUMP文件 到处的文件可以放在jvisulvm里面查看 prof格式 或者dump格式
内存溢出报警自动导出堆文件
1-Xms 内存溢出阈值 -Xmx -Xx:+printGcDetail
2-xx:+heapdumponoutofmemoryError
3-xx:+heapdumppath=文件输出路径
死锁:
方法一
jps 找死锁 进程
jstat +进程号 有个 found one java-leave deadlock 的日志 线程号 堆栈的具体信息 可以定位到哪一行
方法二:
jvisulvm 直接有个死锁的界面 堆栈信息 输出和方法一一样的 还是用方法一的命令 不过封装了一下页面
jvisulvm 也可以远程链接, 但是需要服务端开启允许远程链接的端口 ,一般生产服务器不允许开。
如果线上系统内存突然飙升了,怎么定位问题?
1.top -p
2.按H 查到cpu飙高的进程ID 10进制 需要转16进制
3.jstat + 10进制PID |grep -A 行数 转换后的16进制
垃圾回收:
1.查jvm配置 jinfo -sysprops +进程ID
2.jstat -gc pid 看YGC FGC总共执行了多少次,总共花了多少时间 报警一般都是用jstat -gc +pid 1000 次数 这条命令去做的 1S执行1次 总共执行多少次