
JVM
文章平均质量分 96
JVM虚拟机
程序员小潘
Java开发工程师,现居杭州,优快云博客专家,热衷于分享计算机编程相关知识,欢迎关注~
展开
-
一篇文章彻底搞懂GC
文章目录前言1. JVM内存区域2. GC概述2.1 哪些对象需要回收2.1.1 引用计数算法2.1.2 可达性分析算法2.2 如何回收2.3 何时回收3. GC回收算法3.1 分代收集理论3.1.1 强分代假说3.1.2 弱分代假说3.1.3 跨代引用假说3.2 标记清除3.3 标记复制3.4 标记整理4. 垃圾收集器4.1 Serial4.2 Parallel4.3 CMS4.4 G14.5 面向未来的ZGC5. GC的调优前言1. JVM内存区域GC的主要作用区域2. GC概述GC要完成原创 2021-01-31 15:13:39 · 2662 阅读 · 1 评论 -
CMS与三色标记算法
文章目录CMS收集器CMS的缺点三色标记算法漏标错标原始快照和增量更新写屏障尾巴CMS(Concurrent Mark Sweep)是一款里程碑式的垃圾收集器,为什么这么说呢?因为在它之前,GC线程和用户线程是无法同时工作的,即使是Parallel Scavenge,也不过是GC时开启多个线程并行回收而已,GC的整个过程依然要暂停用户线程,即Stop The World。这带来的后果就是Java程序运行一段时间就会卡顿一会,降低应用的响应速度,这对于运行在服务端的程序是不能被接收的。GC时为什么要暂停原创 2020-11-08 16:37:56 · 14680 阅读 · 15 评论 -
大白话理解可达性分析算法
垃圾收集(Garbage Collection,下文简称GC)是Java有别于其他编程语言的一大特点,GC主要考虑的有三个问题:哪些内存需要回收?什么时候回收?如何回收?今天咱们主要聊聊JVM是如何判断对象可以被回收的。常用的算法有两种:引用计数算法可达性分析算法引用计数算法在对象中添加一个引用计数器,每当新加一个引用时,计数器就加1,当引用失效时,计数器就减1。任何时刻只要计数器为0就代表对象没有引用可以被回收。这种算法实现简单,判断高效,但是有一些缺点:主流的商用JVM原创 2020-10-24 21:39:29 · 30011 阅读 · 15 评论 -
Java垃圾收集与内存分配
内容参考《深入理解JVM虚拟机》,本文JVM均指HotSpot虚拟机。Java程序运行期间无时无刻不在产生对象,JVM为对象动态的分配内存,如果内存不释放肯定会有耗尽的一天。C语言需要开发者为创建的对象编写的配套的delete/free来释放内存,但是Java开发者却不需要那么做,这一切都要归功于:垃圾收集技术(Garbage Collection)。垃圾收集技术的历史远比Java早,1...原创 2020-02-09 17:28:34 · 3649 阅读 · 2 评论 -
Java内存区域与内存溢出
内容参考《深入理解JVM虚拟机》,本文JVM均指HotSpot虚拟机。Java与C语言针对“内存管理”有很大的不同。在C语言中,开发者需要维护对象的出生和死亡,往往需要为每个new出来的对象编写配套的delete/free代码来释放内存,否则可能发生内存泄漏或溢出。而在Java中,内存由JVM管理,垃圾回收器GC会帮助开发者自动回收不再被引用的对象来释放内存,使得Java不太会像C语言那...原创 2020-02-09 17:27:55 · 3530 阅读 · 1 评论