垃圾回收机制

2019-11-05  本文已影响0人  lusoer

今日分的学习内容——垃圾回收机制(GC)
算是一个比较基础的内容,但是以前一直没有时间系统的学习这一方面,今天就全面的来学习学习。由于Java语言的垃圾回收机制做的比较完善,就拿Java来说明了 。

  1. 为什么要进行垃圾回收?
    世上本没有GC,用C/C++的人多了,也就有了垃圾回收——鲁迅。
    很明显,一开始的语言都是没有GC机制的,全靠程序员自己来管理内容,啥时候分配了空间,就得记得还给操作系统。虽然这样对于一些大神来说可以写出高效的程序,少用内存,但是对于大部分程序员来说还是太麻烦了,于是就想着语言自己给我把不用的内存给回收就好了,也就有了后来的事情。
  2. 该怎么实现呢?
    想法很美好,但是要怎么做呢?

其他一些GC相关的问题

  1. 一个通过make()命令创建的缓冲区被分配了一块内存后。如何销毁缓冲区并收回内存?
    buffer = nil;在运行时,buffer = nil将启动垃圾回收
  2. Java 中的StrongReference、 SoftReference、 WeakReference 以及 PhantomReference是啥?
    StrongReference 是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内,当没有任何对象指向它时将会被GC回收。
    WeakReference,顾名思义, 是一个弱引用, 当所引用的对象在JVM 内不再有强引用时, 将被GC回收。
    虽然 WeakReference 与 SoftReference 都有利于提高 GC 和 内存的效率,但是 WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而 SoftReference 会尽可能长的保留引用直到 JVM 内存不足时才会被回收(虚拟机保证), 这一特性使得SoftReference 非常适合缓存应用
上一篇 下一篇

猜你喜欢

热点阅读