既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
1、废弃常量:若字符串“abc”进入了常量池,但当前系统没有任何String对象引用“abc”常量,则当发生内存回收(有必要的情况下)时,常量就会被回收。
2、无用的类:
- 该类的所有实例已被回收,Java堆不存在该类实例
- 加载该类的classloader已被回收
- 加载该类的class对象,没有任何地方引用,且也不能通过反射访问
heapspace分为年轻代和老年代。
年轻带的垃圾回收叫Young GC,老年代的垃圾回收叫Full GC。
在年轻代中经历了N次(可配置)垃圾回收后仍然存活的对象,就会被复制到老年代。(因此一般老年代可以被认为是存放生命周期较长的对象)
垃圾回收算法:
- 标记-清除算法(Mark-Swap):标记清除后会产生大量的碎片,以后分配内存较大的对象可能会找不到足够大的连续内存空间,从而导致下一次GC
- 复制算法:由于新生代的对象生命周期较短,老年代的对象存活率较高,把内存空间分成1块Eden空间和2块Survivor空间。垃圾回收时,把Eden和Survivor空间中活着的对象一次性复制到另一块Survivor空间中,再清理Eden和Survivor的空间。HotSpot默认Eden:Survivor=8:1.
- 标记-整理算法:和Mark-Swap一样,但最后复制后的存活对象向一端移动。
- 分代算法:新生代用复制算法,老年代用标记清理算法活着标记整理算法。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**