垃圾是什么
什么是垃圾?
垃圾就是在运行中没有任何指针指向的一块空间。
不及时进行内存清理,会让一大块空间空闲,让大量空间浪费,甚至导致内存溢出。
及时清理空间,可以将垃圾去除掉,整理空间内存,将省下来的内存空间交给新的对象去使用。
Minor Gc就是YGC,MajorGC是针对老年代的垃圾回收。
Full GC
调优就是让GC执行少一些
GC执行策略
什么是垃圾?
在内存中,没有任何指针指向的对象,就是垃圾,反正以后也不会在被用到了
不去及时的清理垃圾,会出现一个问题,就是垃圾所占用空间不会被别人所使用长此以往,会沾满空间,
垃圾回收的算法:
第一步垃圾标记阶段:
标记哪些是垃圾,需要被调查处理
OOM会发生在方法区和堆区
StackOverFlow会发生在两个栈区
**
算法两个:
引用计数器算法和可达性分析算法,java使用可达性分析算法
引用计数算法
**
可达性分析算法:
相当于在中央有巨大影响力的,派系大佬当年的小弟,都不能动,你不知道和大佬关系咋样,所以你不能动这些人,不然完蛋了。
清除算法:
标记好之后要进行清除
标记清除算法:
空间完全碎片化了,空间利用率不高。还需要进行标记,比较麻烦。
重点标注哪些干部是老领导当年的部下,这些人惹不起,剩下的都往死里整。
根据根节点才能遍历标记到所有不能清除的引用练。
最大问题,碎片问题太严重了。空间地址不够连续,空间完全不连续。
记住我们要标记的是不能清除的东西,因为GC链带你找到的就是所有不能动的。
复制算法:
好处是省去了标记这个环节,并不需要标记,直接将需要的对象放进另一块区域中,按连续顺序排列好。