| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Java知识库 -> JVM(13):(Minor GC、Major GC与Full GC)、GC举例与日志分析、堆空间分代思想 -> 正文阅读 |
|
|
[Java知识库]JVM(13):(Minor GC、Major GC与Full GC)、GC举例与日志分析、堆空间分代思想 |
一、Minor GC、Major GC与Full GC????????JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。 ????????针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集( Partial GC) ,一种是整堆收集(Full?GC)。 ????????部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:
????????整堆收集(Full GC):收集整个java堆和方法区的垃圾收集。 年轻代GC(Minor GC)触发机制:
?老年代GC (Major GC/Full?GC)触发机制:
Full GC触发机制:????????触发Full GC执行的情况(后面细讲)有如下五种:
????????说明: full gc是开发或调优中尽量要避免的。这样暂时时间会短一些。 二、GC举例与日志分析? ? ? ? 测试代码:
? ? ? ? 添加运行参数,用于显示垃圾回收的信息。
????????运行结果:?
三、堆空间分代思想????????为什么需要把Java堆分代?不分代就不能正常工作了吗?经研究,不同对象的生命周期不同。70%-99%的对象是临时对象。
????????其实不分代完全可以,分代的唯一理由就是优化Gc性能。如果没有分代,那所有的对象都在一块,就如同把一个学校的人都关在一个教室。Gc的时候要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而很多对象都是朝生夕死的,如果分代的话,把新创建的对象放到某一地方,当GC 的时候先把这块存储“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/25 2:51:36- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |