![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
jvm
小熊123~
优秀是一种习惯
展开
-
新一代垃圾回收器ZGC的探索与实践
原文链接ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括:停顿时间不超过10ms; 停顿时间不会随着堆的大小,或者活跃对象的大小而增加; 支持8MB~4TB级别的堆(未来支持16TB)。从设计目标来看,我们知道ZGC适用于大内存低延迟服务的内存管理和回收。本文主要介绍ZGC在低延时场景中的应用和卓越表现,文章内容主要分为四部分:GC之痛:介绍实际业务中遇到的GC痛点,并分析CMS收集器和G1收集器停顿时间瓶颈; ZGC原转载 2021-01-19 14:42:33 · 102 阅读 · 0 评论 -
Java中9种常见的CMS GC问题分析与解决
原文链接1. 写在前面| 本文主要针对 Hotspot VM 中“CMS + ParNew”组合的一些使用场景进行总结。重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多,另外本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料。| 总字数 2 万左右(不包含代码片段),整体阅读时间约 30min ,文章较长,可以选择你感兴趣的场景进行研究。1.1 引言自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来转载 2021-01-19 14:25:38 · 560 阅读 · 0 评论 -
JVM内存模型(方法区,堆,栈,本地方法栈)
方法区是各个线程共享的区域,存放类信息、常量、静态变量java堆也是线程共享的区域,我们的类的实例就放在这个区域,可以想象你的一个系统会产生很多实例,因此java堆的空间也是最大的。如果java堆空间不足了,程序会抛出OutOfMemoryError异常。java栈是每个线程私有的区域,它的生命周期与线程相同,一个线程对应一个java栈,每执行一个方法就会往栈中压入一个元素,这个元素叫“栈帧”,而栈帧中包括了方法中的局部变量、用于存放中间状态值的操作栈递归如果深度很深,就会执行大量的方法,方法越多ja.原创 2020-08-21 17:19:25 · 357 阅读 · 0 评论 -
JVM常见垃圾回收算法(引用计数,标记清除,标记整理,复制)
引用计数法: 频繁计数影响性能,无法处理循环引用问题标记清除: 标记:遍历所有的GC Roots,并将从GC Roots可达的对象设置为存活对象; 清除:遍历堆中的所有对象,将没有被标记可达的对象清除; 大量的内存遍历工作,所以执行性能较低 内存不连续,空间浪费标记压缩: 在进行完标记清除之后,对内存空间进行压缩,节省内存空间,解决了标记清除算法内存不连续的问题。 节省内存空间,解决了标记清除算法内存不连续复制算法: 内存一分为二,存活对象复制到空白内存,最后将正在使用的内存空间的对.原创 2020-08-21 17:23:28 · 413 阅读 · 0 评论 -
JVM垃圾回收器(串行Serial,ParNew,Parallel,CMS,G1)
串行收集器(使用单线程进行垃圾回收):对新生代的回收使用复制算法,对老年代使用标记压缩算法 串行收集器 -XX:+UseSerialGC 新生代串行复制,老年代串行标记整理并行回收器(使用多线程进行垃圾回收): ParNew回收器 -XX:+UseParNewGC 新生代并行复制,老年代串行标记整理 Parallel回收器 -XX:+UseParallelGC 新生代并行复制,老年代串行标记整理(比ParNew回收器好) Parallel回收器 -XX.原创 2020-08-21 17:28:44 · 501 阅读 · 0 评论 -
JVM四大引用(强、弱、软、虚)
强引用: User user = new User(); String str = "hello"; 如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存不足时,宁可抛OutOfMemoryError错误。 只有显式将其设置为null,或超出对象生命周期,这个对象才可以被回收。软引用: SoftReference<String> sr = new SoftReference<String>(new String("hello")).原创 2020-08-23 16:02:48 · 221 阅读 · 0 评论 -
JVM之Arthas
Arthas中文官网下载: curl -O https://arthas.aliyun.com/arthas-boot.jar启动一个java程序: curl -O https://arthas.aliyun.com/arthas-demo.jar java -jar arthas-demo.jar启动arthas: java -jar arthas-boot.jar 启动后选择进程1或别的进程入门功能: dashboard原创 2020-08-24 11:01:48 · 120 阅读 · 0 评论