
jvm
文章平均质量分 87
const伐伐
这个作者很懒,什么都没留下…
展开
-
java内存模型及常见的几种非原子性操作
文章目录java内存模型(JMM)1. 自增操作2. instance = new Singleton();3. y = x;java内存模型(JMM)java内存模型 (java memory model JMM)指定了java虚拟机如何与计算机的主存RAM进行工作(可以类比RAM和cpu L1 L2 L3高速缓存)java内存模型定义了线程和主内存之间的抽象关系线程不能直接操作主内存,只有先操作了工作内存之后才能写入主内存。工作内存和java内存模型一样也是一个抽象的概念,它其实并不存在,其原创 2021-02-26 17:25:28 · 618 阅读 · 0 评论 -
为什么需要线程上下文类加载器
文章目录线程上下文类加载器基础案例1:JDK SPI机制问题解决方案案例2:tomcat中spring加载业务类问题解决方案补充:facade模式类加载问题线程上下文类加载器基础线程上下文类加载器是一种类加载器传递机制。为什么叫作“线程上下文类加载器”呢,因为这个类加载器保存在线程私有数据里,只要是同一个线程,一旦设置了线程上下文加载器,在线程后续执行过程中就能把这个类加载器取出来用。线程上下文加载器其实是线程私有数据,跟线程绑定的属性。站在开发者角度,其他线程都是由main线程,也就是main函数原创 2021-02-26 17:04:44 · 1017 阅读 · 2 评论 -
堆内存Old Generation有百万个Java Bean实例对象造成OOM(jpa使用不当造成OOM)
场景:线上间断发生CPU飙高的问题,查看heap used,会发现在cpu飙高的时间内,机器hang住,无法响应请求上图为pinpoint监控所示,在这2分半钟时间内发生了GC,其机器hang住用jmap看了一下当jvm内存为2G时放到memoryAnalyzer(MAT)里面看一下在unreachable jobject中查看Object中的值,发现一个规...原创 2019-11-04 16:03:14 · 1808 阅读 · 0 评论 -
arthas整体执行流程
arthas可以理解为由server, client, spy三大模块组成整体执行流程启动arthas server,利用JVMTI技术(参考:当我们谈Debug时,我们在谈什么(Debug实现原理)),在运行时attach到jvm进程上arthas server异步调用bind方法,该方法最终启动server监听线程,监听arthas客户端的连接,包括telnet和websocket两种通信方式启动arthas client,请求时,从本地System.in读取,发送到 telnet.原创 2021-02-25 13:22:16 · 720 阅读 · 0 评论 -
Eclipse Memory Analyzer(MAT)功能介绍
文章目录提供的功能1. overview部分2. unreachable objects Histogram3. Histogram视图4. Dominator Tree视图5. Group分组功能6. Thread Overview7. List objects8. Path To GC Roots9. Merge Shortest Paths to GC roots10. Leak Suspects Report使用MAT分析线上内存泄漏案例场景:分析:原因:提供的功能1. overview部分原创 2021-02-25 09:43:40 · 2964 阅读 · 0 评论 -
如何分析java thread dump文件
文章目录jstack命令基础知识:java线程状态blocked状态和waiting状态区别thread dump文件分析重点关注1:程序死锁DeadLock重点关注2:waiting on condition重点关注3:Blocked线程阻塞重点关注4:Waiting for monitor entry 和 in Object.wait():thread dump文件示例实例1:Waiting for monitor entry 和 Blocked实例2:Waiting on condition 和 TI原创 2021-02-24 20:15:26 · 1436 阅读 · 0 评论 -
G1(Garbage First Collector)是如何进行垃圾回收的
文章目录G1 收集器的设计目标:替换掉 CMS实现思路G1 GC的两种收集模式G1运行过程1. G1 Young GC2. 全局并发标记(global concurrent marking)3. 混合模式 mixed gc什么时候发生 Mixed GC?4. Full GCG1总结G1收集器特点G1 的适合场景G1最佳实践代码验证及G1 gc日志解析G1应用G1 收集器的设计目标:替换掉 CMSCMS的缺点参考:cms垃圾收集器是如何进行垃圾回收的不牺牲系统的吞吐量;与应用线程同时工作,几乎原创 2021-02-23 22:10:22 · 768 阅读 · 3 评论 -
cms垃圾收集器是如何进行垃圾回收的
文章目录CMS 垃圾回收器核心垃圾回收过程完整垃圾回收过程阶段一:初始标记阶段二:并发标记(Concurrent Mark)阶段三:并发预清理阶段阶段四:可终止的预处理阶段五:重新标记阶段六:并发清理阶段七:并发重置CMS 优缺点总结缺点1:总吞吐量降低缺点2:无法处理浮动垃圾缺点3:空间碎片问题缺点4:GC 的时间难以预估代码验证CMS 垃圾回收器CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的 Java 应用集中在互联网网站或者原创 2021-02-23 20:20:20 · 2689 阅读 · 2 评论