JVM
文章平均质量分 67
guangyingposuo
这个作者很懒,什么都没留下…
展开
-
解决tomcat启动失败问题排查
一、问题介绍springmvc项目本地junit没有问题,但是本地Tomcat启动报错,查询全是servlet的原因,但是检查后,发现web.xml中配置的servlet配置没有问题。05-Feb-2021 13:45:30.828 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apac原创 2021-02-05 14:01:03 · 2061 阅读 · 0 评论 -
JVM导出dump文件
1.jvm启动时增加的参数#出现 OOME 时生成堆 dump: -XX:+HeapDumpOnOutOfMemoryError#生成堆文件地址:-XX:HeapDumpPath=/home/liuke/jvmlogs/2.查看内存状态 jmap -heap 进程ID3.查看JVM堆中对象详情占用情况 jmap -histo 进程ID4.导出整个JVM 中内存信息,可以利用其它工具打开dump文件分析,例如jdk自带的visualvm工具 jmap -dump:f...原创 2020-05-21 10:05:32 · 1496 阅读 · 0 评论 -
CAS原理
最近有次面试,问到CAS的底层实现原理,原先看博客和知乎上都是说使用硬件来实现比较和替换的原子性;被毒打了;现在记录一下。1.CAS操作是通过sun包下Unsafe类2.CAS的原理Unsafe中对CAS的实现是C++。CAS的实现和操作系统、CPU都有关系Linux的X86下主要是通过cmpxchgl这个指令在CPU级完成CAS操作的,但在多处理器情况下必须使用lock指令加锁来完成。从这个例子就可以比较清晰的了解CAS的底层实现了。...原创 2020-05-21 09:07:09 · 156 阅读 · 0 评论 -
JVM参数总结
1、堆栈配置相关-Xmx3550m: 最大堆大小为3550m。-Xms3550m: 设置初始堆大小为3550m。-Xmn2g: 设置年轻代大小为2g。-Xss128k: 每个线程的堆栈大小为128k。-XX:MaxPermSize: 设置持久代大小为16m-XX:NewRatio=4: 设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。-XX:SurvivorRatio=4: 设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Su原创 2020-05-18 10:29:16 · 137 阅读 · 0 评论 -
解决Linxu cpu和内存高的过程
同事新开发了一个程序,原先在华为云上运行的时候占得CPU和内存比较高,经理让我定位下问题。经检查是线程池任务中阻塞队列中任务占用太多的原因。1.top查看程序的PID、内存和CPU的使用情况。 查看top后,PID=55582.将5558转为16进制。利用window自带的计算器,将5558转为16进制后为15B63.利用jvm自带的jstack导出堆栈信息。 jstack -l 5558 > jstack.log5.分析jstack文件,发现好多线程处于wa...原创 2020-05-14 13:59:11 · 179 阅读 · 0 评论 -
一次young gc耗时过长优化过程
https://www.cnblogs.com/sunzhenchao/p/6711275.html转载 2020-05-12 16:14:16 · 409 阅读 · 0 评论 -
分布式垃圾收集DGC
1、DGC采用引用计数法判断对象已死。2、当使用RMI远程调用时;只有当远程对象的本地引用和远程引用同时失效;才会进行垃圾回收。当客户端获得远程对象的存根时;会定期向服务器发租约通知;告诉服务器自己持有远程对象的引用了。 因为租约通知有时效的;所以需要客户端定时发出新的租约通知。如果客户端不在发送租约通知;导致过期;服务器就会认为远程客户端不在持有该对象。...原创 2020-05-11 13:58:43 · 297 阅读 · 0 评论