前天刚经历了一场面试,还好这次备足了功课,一面完了直接二面,接着又复试,顺利拿到了offer哈哈,还是很开心的。(好了,装逼到此结束)。虽然自己在一面时候会的东西都发挥的很好,但是有好几个知识点还是被面试官问的一脸懵逼,只能舔的脸说:“不好意思,这个不太了解。。”。这几天针对这次的面试遗留的问题,要开始逐个击破了,其中有一个点就是内存泄漏。
相信学过c的大家都知道内存泄漏的大概概念,但是如果真的说个一道两道,没有深入了解过的都不知道该怎么说,所以今天给大家带来比较全面的关于内存泄漏的知识点。
内存泄漏的概念
首先来了解一下什么是内存泄漏:
程序申请的内存空间,在使用完毕后未释放,一直占据内存单元。
解释一下:我们创建了一个对象,当然在堆内存中给这个对象申请一块内存空间,这里的使用完毕是说,我们只调用了一次或者几次,在之后就一直没有调用,但是他还是在占据着内存。
但是java中有一种叫做垃圾回收的守护线程GC,他会将不再需要的内存释放掉,下面就来看一看这个GC。
垃圾回收机制GC
CG的作用
释放掉不可到达的对象的内存。
不可达到是个什么概念?
这理要说一下我们java的内存分区了,其中有两个非常重要的就是栈内存和堆内存: