JVM&GC基本知识

本文介绍了JVM的垃圾收集机制,包括三种基础GC、G1的四个操作阶段,以及Java对象头、JIT编译器、HotSpot VM等概念。讲解了内存泄漏、引用类型区别、对象存活判断和内存分配策略,还探讨了堆内存快照、根集合和堆外内存管理,特别是finalization机制和Interned String如何节省内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM&GC基础知识

1.三种基础gc

在这里插入图片描述

2.什么是g1

在这里插入图片描述

3.g1的四个操作阶段

在这里插入图片描述

4 java相关术语

4.1 Millisecond

在这里插入图片描述

4.2 Megabyte

在这里插入图片描述

4.3 demo获取内存大小(见jvm配置)

4.4 finalization机制(对象终止机制)

    finalize()    可达状态  可复活状态  不可达状态 

4.5 Interned String 确保字符串在内存里只有一份拷贝,节省内存空间 这个内存空间指常量池

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200811114054861.png)

intern()在jdk 6\7\8中分别有改动

5.内存泄漏

很多时候是内存不足引起
抛出异常  OutOfMemoryError

6.GC对于不同内存引用的类型的区别

(java有四个级别的引用   强引用 Strong Reference  软引用 Soft Reference 弱引用 Weak Reference 虚引用 Phantom Reference)只有强引用是包内的 其他都是public
垃圾回收器会只尝试回收只有弱引用的对象

GC对于不同引用的类型的区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.Java对象头

在HotSpot虚拟机中,对象在内存中的布局可以分成对象头,实例数据,对其填充三部分

在这里插入图片描述

8.JIT编译器 即时编译器能够将MSIL编译成各种不同的机器代码

9.HotSpot VM

在这里插入图片描述

10.堆内存快照(java heap dump)

在这里插入图片描述

11.根集合

11.1栈是运行时的单位,而堆时存储的单位
11.2栈解决程序的运行问题,即程序如何执行、处理数据;堆解决的是存储数据的问题,即数据怎么存,存在哪    
11.3java中,一个线程就会相应的对应一个线程栈
11.4根集合是栈里面的对象引用和堆内存里面的对象的集合      GC通过root来判别哪些对象需要回收,哪些对象依旧是存活的

12.崩溃文件

13.回收算法

垃圾收集针对的是堆内存里面的对象。最简单的是引用计数,针对每个对象保存一个引用计数,如果计数为0,则删除。缺点是新的对象生成就需要更新相关的计数,更重要的是无法删除循环引用

其他的算法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

14.年轻代、老年代

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200811114230927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQxMTM5OA==,size_16,color_FFFFFF,t_70)

对象提升机制
1.对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机执行一次Minor GC
2.大对象直接进入老年代(大对象指需要大量连续内存空间的对象)
3.长期存活的对象进入老年代
4.动态判断对象的年龄
5.

15.对象存活判断

1.引用计数
2.可达性分析   从GC roots开始向下搜索,搜索所走过的路径成为引用链,当一个对象到GCRoots没有任何引用链相连时,则证明此对象时不可用的不可达对象

16.System.gc()方法

默认下直接触发Full GC,同时堆老年代和新生代进行回收。

17.堆外内存

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200811114257522.png)

优点

在这里插入图片描述

缺点

在这里插入图片描述

18.finalize()方法堆垃圾回收的影响

在这里插入图片描述

19.markOop描述了一个对象的状态信息

20.G1术语

1.Metaspace 元空间
2.Mixed GC Event 混合GC事件
3.Reclaimable 
4.RSet 跟踪指向某一个堆区内的对象引用
5.CSet 收集集合,保存一次GC中将执行垃圾回收的区间。
6.G1 Pause Time Target
7.Root Region Scan
8.PLAB 用于年轻代回收,作用是避免多线程竞争相同的数据
9.TLAB 本地分配缓存
10.Lock-free Manner 无锁竞争分配方式
11.Region 分区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值