![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
JuHootin
这个作者很懒,什么都没留下…
展开
-
【JVM-01】JVM位置及内存结构
目录JVM位置JVM内存结构JVM位置JVM运行在操作系统之上JVM内存结构原创 2020-09-17 02:05:01 · 112 阅读 · 0 评论 -
Young Collection的跨代引用
新生代垃圾回收的过程:首先要找到根对象 然后对根对象进行可达性分析,找到存活对象 对存活对象进行复制,复制到幸存区产生问题:找到新生代对象的根对象,根对象有一部分是来自老年代的,而老年代存活的对象一般都特别多,如果去遍历整个老年代,效率非常低。应对措施:采用了cart table的方式,对老年代进行细分,分成了许多个card,每个card大约是512K。如果老年代某个对象,引用了新生代的对象,我们把这个老年代的对象标记为脏card。这样,找老年代的根对象时,就不用遍历整个老年代了,...原创 2020-07-01 15:19:42 · 554 阅读 · 2 评论 -
Full GC
SerialGC新生代内存不足发生的垃圾收集 – minor gc 老年代内存不足发生的垃圾收集 –Full GCParallelGC新生代内存不足发生的垃圾收集是 minor GC 老年代内存不足发生的垃圾收集是Full GCCMS新生代内存不足发生的垃圾收集是 minor GC 老年代内存不足,并发收集失败时会Full GC,可以看gc日志,打印出了full gc字样,才是Full GCG1新生代内存不足发生的垃圾收集是 minor GC 老年代内存不足,当老年..原创 2020-07-01 15:08:55 · 202 阅读 · 0 评论 -
G1垃圾回收器
适用场景:同时注意吞吐量和低延迟 默认的暂停目标是200ms , 适合超大堆内存,会将堆划分为多个大小相等的区域特点:整体上是标记+整理算法,两个区域之间是复制算法垃圾回收阶段:Young Collection新生代的垃圾收集 Young Collection + Concurrent Mark(新生代垃圾回收+并发标记) Mixed Collection 混合收集Young Collection新生代的垃圾收集:① 如下图1-1,G1垃圾回收器把...原创 2020-06-30 17:28:07 · 180 阅读 · 0 评论 -
垃圾回收器
分类:串行 吞吐量优先 响应时间优先详细介绍:1.串行单线程 堆内存较小,适合个人电脑 开启串行垃圾回收器的jvm参数:-XX:+UseSerialGC = Serial(新生代复制算法) + SerialOld(老年代标记整理算法) 注:在一个进程进行垃圾回收时,要在一个安全点阻塞其他进程,进行一次stop the world,因为对象回收时,会涉及到对象移动,引用的地址会改变。2.吞吐量优...原创 2020-06-29 17:32:41 · 142 阅读 · 0 评论 -
分代垃圾回收过程
堆内存初始状态,开辟出新生代和老年代,新生代分为伊甸园区和幸存者区,内存比例为8:1,幸存者区一分为二,划分成幸存者FROM区和幸存者TO区对象首先分配在伊甸园区继续存放新对象当发现新生代空间不足时,触发Minor GC,经过标记清除,伊甸园区的垃圾被回收,存活下来的存入幸存者TO区交换FROM和TO的指针继续产生新对象,存入伊甸园区伊甸园内存不够,进行第二次Minor GC,清除伊甸园和FROM区的垃圾,并且将伊甸园区和FROM区不是垃圾的对象移动到幸...原创 2020-06-29 17:05:49 · 629 阅读 · 0 评论 -
垃圾回收算法
标记清除先判断可以回收的对象,并标记 再对标记的对象,进行回收,释放空间。 -------(释放空间只需要将对象所占用内存的起始和结束地址记录下来,放到空闲地址列表里就可以了) -------(再分配新对象的时候,在空闲地址列表里找一块足够的空间) 优点:速度快 缺点:产生内存碎片标记整理先判断可以回收的对象,并标记 一边释放空间,一边将未回收的对象内存空间,向前移动,让内存更加紧凑优点:没有内存碎片 缺点:效率低,需要移动的时间。并且在整理过后,如果一些局部变量引用了改.原创 2020-06-24 15:30:18 · 113 阅读 · 0 评论 -
五种引用
强引用 被GC Root直接引用的对象 只有所有GCRoot断开引用后,才能被回收 软引用 被GCRoot间接引用的对象 在不被任何一个GC Root直接引用后,当一次垃圾回收后,内存仍然不足时,回收软引用对象 弱引用 被GCRoot间接引用的对象 在不被任何一个GC Root直接引用后,当发生垃圾回收,不管空间够不够 都会回收弱引用对象 虚引用 被GCRoot间接引用的对象 必须配合引用队列使用 终...原创 2020-06-24 14:18:06 · 331 阅读 · 0 评论 -
垃圾回收的判断
1.如何判断一个对象可以被回收引用计数法:一个对象被其他变量引用,则计数+1,每被多引用一次,计数就+1,如果某个变量不再引用这个对象,则计数-1,如果计数为0,则可以回收。 存在弊端:循环引用。即如下图,A引用B,B引用A,但没有其他变量引用,A和B的引用计数都为1,不能被回收。 可达性分析算法:首先要确定一系列根对象GC Root(肯定不能被当成垃圾的对象)。 在垃圾回收之前,对堆内存中的所有对象进行扫描,观察每个对象是否被根对象直接或间接的引用,如果是,则不能被回收..原创 2020-06-24 14:11:32 · 243 阅读 · 0 评论 -
JVMz之栈的演示分析
什么是虚拟机栈栈是一种先进后出的数据存储结构,而虚拟机栈则是线程运行需要的内存空间。每个栈由多个栈帧构成,一次栈帧代表一次方法的调用。public class stacks {public static void main(String[] args) { aa();}private static void aa() { bb(1,2); bb(2,3)...原创 2020-03-19 09:39:52 · 196 阅读 · 0 评论 -
JVM之PC寄存器
什么是PC寄存器?PC寄存器本质上像一个指针,指着一个命令行运行结束,下一个该执行PC的命令行。PC寄存器的特点线程私有 内存占用小,不会溢出,不存在垃圾回收器 如果是native方法,寄存器为空...原创 2020-03-18 10:40:07 · 238 阅读 · 0 评论