java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java的垃圾回收回收的是什么? 垃圾回收器只释放那些由new分配的内存. 注意这个限制,jvm只负责回收内存,而且这部分内存是通过new关键字来创建的. 所以像什么数据库连接,IO等等是需要程序员去释放的.

关于java的垃圾回收,简单来说有三点:

  1. 对象可能不会被垃圾回收
  2. 垃圾回收不等于析构
  3. 垃圾回收只和内存相关.

垃圾回收是需要消耗资源的. 所以java的策略是,在不必要的时候,不会进行垃圾回收. 也就是说,只要在程序没有濒临内存告急的时候,对象占用的空间可能一直得不到释放.

finalize()方法

finalize方法不是析构函数. 这是Object类提供的一个很特殊的方法. 这个方法会抛出异常. 但是这个方法的抛出的异常,不会导致程序停止.
这个方法是干嘛用的呢?在垃圾回收器准备释放对象占用的空间时,会先调用finalize方法. 并且在下一次垃圾回收动作发生时,才回真正的回收对象占用的内存. 也就是说,这个函数是用来在垃圾回收器执行回收之前来做一些重要的清理工作.

finalize函数最重要的一个功能,用来释放某些创建对象之外的方式所分配的内存. 但是,java中一切都是对象,那创建对象之外的方式所分配的内存是哪里来的呢? 就不是java弄出来的呗. java有所谓的本地方法,也就是在java中调用其他语言的代码(目前好像只有C和C++). 那有能在调用的C语言代码中使用malloc()方法分配了存储空间,而这些内存空间是垃圾回收器所不能处理的. 所以需要在finalize方法中去释放它.

垃圾回收器如何工作

在堆上分配内存代价很高,但是由于垃圾回收器的存在,在java中,在堆中分配内存的速度甚至可以与其他语言在栈上的速度向媲美. 为什么?
因为java的垃圾回收器一方面会释放空间,一方面会进行内存碎片整理. 所以java创建对象的时候,在堆上分配内存只需要将堆指针移动一下,就像在栈上那样…

引用计数器和java的对象存活判断机制
很多语言的垃圾回收机制靠的是引用计数器. 这是一种简单的方法来判断对象是否存活. 每个对象都有一个引用计数器,如果有一个引用变量连接到该对象时,则,该对象的引用计数器加1. 当引用离开作用域或者被置为null的时候,引用计时器减1. 如果引用计数器为0,则判定该对象失活.(有可能会被立即清理). 但是如果出现循环引用的时候,单纯靠引用计数器就不行了.

所谓循环引用,就像下面这个样子

public void buidDog(){
Dog newDog = new Dog();
Tail newTail = new Tail();
newDog.tail = newTail;
newTail.dog = newDog;
}

各种jvm的实现中好像都没有采用引用计时器的方式. 而是采用了一种更快的方式. 思路是:所有活的对象不管是被引用了多少层,一定可以追溯到堆栈或者静态存储区之中的引用. 那如果从堆栈和静态存储区反向遍历的话,就可以找到所有活着的对象. 那这样就解决了循环引用的问题.

jvm的垃圾回收机制
jvm采用了一种自适应的垃圾回收技术. 有一种做法叫做stop and copy,简单说就是,先暂停程序,但后将所有存活的对象复制到另外一个堆中.当然,那没有被复制的就全是垃圾,当对象被复制到新的堆中的时候肯定是紧凑排列的,就不会存在内存碎片的问题. 当对象从一个堆被复制到另外一个堆之后,那指向它的引用就应该被修正. 静态存储区和栈上的引用可以直接被修正. 但是还有一些其他的引用会在之后的遍历中被修正.

但是这种方式有两个很大的问题:

  1. 开销很大. 因为需要两个堆.内存空间平白无故的多了一倍.
  2. 程序在稳定之后,很少,甚至没有垃圾. 那这种做法就是大炮打蚊子了.

针对第一点,通常的做法是,将堆内存划分为几个大的区块,然后在这几个大的区块之间倒腾. 而关于第二点,会引入一个新的机制,叫mark and sweep. 这种方式很慢,但是如果已经知道只有很少的垃圾的时候,使用它还是合理的. 首先,从栈和静态存储区开始遍历,找到所有存活的对象,每找到一个就给一个标记,表示这个对象是活着的. 这时候不进行清理,等遍历完,所有活着的对象都有标记了.然后释放所有没有标记的对象. 这会使内存不连续. 如果垃圾回收器想要得到连续空间的,会进行内存整理. 同样这个也需要在程序暂停的时候进行.

jvm中内存分配是以较大的块为单位的. 如果对象比较大,那么它会占用单独的块. 对于stop and copy这种方式,严格意义上说,必须把所有活着的对象从旧的堆中复制到新的堆中. 这会导致大量的内存复制行为. 有了块之后,垃圾回收器就可以往废弃的块中拷贝对象. 每个块都会有一个generation count来记录它是否是存活的. 如果块在某处被引用,其代数会增加. 垃圾回收器针对上次清理之后的块进行整理.大型对象不会被复制.但是其代数会增加.内含小型对象的块会被复制和整理. 这对处理处理大量的短命的临时对象很有帮助.

这一段不是很理解,意思是不是,如果一个对象占满了一个块,就认为它是个大的对象. 那么这种单独占一个块的或者的大对象在垃圾回收的时候就没有必要再被复制到另外一个新块中了. 所以不去处理它. 而对于没有占满一个块的小对象,依旧会进行复制和整理.

如果对象比较稳定,那么垃圾回收器效率降低的话,会切换到mark and sweep方式.

%23TIJ%u8BFB%u4E66%u7B14%u8BB006-%u7EC8%u7ED3%u6E05%u7406%u548C%u5783%u573E%u56DE%u6536%0A@%28034.java%29%5Bjava%7Cjava%u7F16%u7A0B%u601D%u60F3%5D%0A%0A%5BTOC%5D%0A%0Ajava%u7684%u5783%u573E%u56DE%u6536%u662F%u7531jvm%u6765%u63A7%u5236%u7684.%u6240%u4EE5%u9700%u8981java%u7A0B%u5E8F%u5458%u53C2%u4E0E%u7684%u90E8%u5206%u4E0D%u662F%u5F88%u591A.%20%u4F46%u662F%u5728%u8FD9%u91CC%u9700%u8981%u660E%u767D%u4E00%u70B9%2Cjava%u7684%u5783%u573E%u56DE%u6536%u56DE%u6536%u7684%u662F%u4EC0%u4E48%3F%20%u5783%u573E%u56DE%u6536%u5668%u53EA%u91CA%u653E%u90A3%u4E9B%u7531**new%u5206%u914D%u7684%u5185%u5B58**.%20%u6CE8%u610F%u8FD9%u4E2A%u9650%u5236%2Cjvm%u53EA%u8D1F%u8D23%u56DE%u6536%u5185%u5B58%2C%u800C%u4E14%u8FD9%u90E8%u5206%u5185%u5B58%u662F%u901A%u8FC7new%u5173%u952E%u5B57%u6765%u521B%u5EFA%u7684.%20%u6240%u4EE5%u50CF%u4EC0%u4E48%u6570%u636E%u5E93%u8FDE%u63A5%2CIO%u7B49%u7B49%u662F%u9700%u8981%u7A0B%u5E8F%u5458%u53BB%u91CA%u653E%u7684.%20%0A%0A%u5173%u4E8Ejava%u7684%u5783%u573E%u56DE%u6536%2C%u7B80%u5355%u6765%u8BF4%u6709%u4E09%u70B9%3A%0A1.%20%u5BF9%u8C61%u53EF%u80FD%u4E0D%u4F1A%u88AB%u5783%u573E%u56DE%u6536%0A2.%20%u5783%u573E%u56DE%u6536%u4E0D%u7B49%u4E8E%u6790%u6784%0A3.%20%u5783%u573E%u56DE%u6536%u53EA%u548C%u5185%u5B58%u76F8%u5173.%0A%0A%u5783%u573E%u56DE%u6536%u662F%u9700%u8981%u6D88%u8017%u8D44%u6E90%u7684.%20%u6240%u4EE5java%u7684%u7B56%u7565%u662F%2C%u5728%u4E0D%u5FC5%u8981%u7684%u65F6%u5019%2C%u4E0D%u4F1A%u8FDB%u884C%u5783%u573E%u56DE%u6536.%20%u4E5F%u5C31%u662F%u8BF4%2C%u53EA%u8981%u5728%u7A0B%u5E8F%u6CA1%u6709%u6FD2%u4E34%u5185%u5B58%u544A%u6025%u7684%u65F6%u5019%2C%u5BF9%u8C61%u5360%u7528%u7684%u7A7A%u95F4%u53EF%u80FD%u4E00%u76F4%u5F97%u4E0D%u5230%u91CA%u653E.%20%0A%0A%23%23finalize%28%29%u65B9%u6CD5%0Afinalize%u65B9%u6CD5%u4E0D%u662F%u6790%u6784%u51FD%u6570.%20%u8FD9%u662FObject%u7C7B%u63D0%u4F9B%u7684%u4E00%u4E2A%u5F88%u7279%u6B8A%u7684%u65B9%u6CD5.%20%u8FD9%u4E2A%u65B9%u6CD5%u4F1A%u629B%u51FA%u5F02%u5E38.%20%u4F46%u662F%u8FD9%u4E2A%u65B9%u6CD5%u7684%u629B%u51FA%u7684%u5F02%u5E38%2C%u4E0D%u4F1A%u5BFC%u81F4%u7A0B%u5E8F%u505C%u6B62.%0A%u8FD9%u4E2A%u65B9%u6CD5%u662F%u5E72%u561B%u7528%u7684%u5462%3F%u5728%u5783%u573E%u56DE%u6536%u5668%u51C6%u5907%u91CA%u653E%u5BF9%u8C61%u5360%u7528%u7684%u7A7A%u95F4%u65F6%2C%u4F1A%u5148%u8C03%u7528finalize%u65B9%u6CD5.%20%u5E76%u4E14%u5728%u4E0B%u4E00%u6B21%u5783%u573E%u56DE%u6536%u52A8%u4F5C%u53D1%u751F%u65F6%2C%u624D%u56DE%u771F%u6B63%u7684%u56DE%u6536%u5BF9%u8C61%u5360%u7528%u7684%u5185%u5B58.%20%u4E5F%u5C31%u662F%u8BF4%2C%u8FD9%u4E2A%u51FD%u6570%u662F%u7528%u6765%u5728%u5783%u573E%u56DE%u6536%u5668%u6267%u884C%u56DE%u6536%u4E4B%u524D%u6765%u505A%u4E00%u4E9B%u91CD%u8981%u7684%u6E05%u7406%u5DE5%u4F5C.%20%0A%0Afinalize%u51FD%u6570%u6700%u91CD%u8981%u7684%u4E00%u4E2A%u529F%u80FD%2C%u7528%u6765%u91CA%u653E%u67D0%u4E9B%u521B%u5EFA%u5BF9%u8C61%u4E4B%u5916%u7684%u65B9%u5F0F%u6240%u5206%u914D%u7684%u5185%u5B58.%20%u4F46%u662F%2Cjava%u4E2D%u4E00%u5207%u90FD%u662F%u5BF9%u8C61%2C%u90A3%u521B%u5EFA%u5BF9%u8C61%u4E4B%u5916%u7684%u65B9%u5F0F%u6240%u5206%u914D%u7684%u5185%u5B58%u662F%u54EA%u91CC%u6765%u7684%u5462%3F%20%u5C31%u4E0D%u662Fjava%u5F04%u51FA%u6765%u7684%u5457.%20java%u6709%u6240%u8C13%u7684%u672C%u5730%u65B9%u6CD5%2C%u4E5F%u5C31%u662F%u5728java%u4E2D%u8C03%u7528%u5176%u4ED6%u8BED%u8A00%u7684%u4EE3%u7801%28%u76EE%u524D%u597D%u50CF%u53EA%u6709C%u548CC++%29.%20%u90A3%u6709%u80FD%u5728%u8C03%u7528%u7684C%u8BED%u8A00%u4EE3%u7801%u4E2D%u4F7F%u7528malloc%28%29%u65B9%u6CD5%u5206%u914D%u4E86%u5B58%u50A8%u7A7A%u95F4%2C%u800C%u8FD9%u4E9B%u5185%u5B58%u7A7A%u95F4%u662F%u5783%u573E%u56DE%u6536%u5668%u6240%u4E0D%u80FD%u5904%u7406%u7684.%20%u6240%u4EE5%u9700%u8981%u5728finalize%u65B9%u6CD5%u4E2D%u53BB%u91CA%u653E%u5B83.%20%0A%0A%23%23%u5783%u573E%u56DE%u6536%u5668%u5982%u4F55%u5DE5%u4F5C%0A%u5728%u5806%u4E0A%u5206%u914D%u5185%u5B58%u4EE3%u4EF7%u5F88%u9AD8%2C%u4F46%u662F%u7531%u4E8E%u5783%u573E%u56DE%u6536%u5668%u7684%u5B58%u5728%2C%u5728java%u4E2D%2C%u5728%u5806%u4E2D%u5206%u914D%u5185%u5B58%u7684%u901F%u5EA6%u751A%u81F3%u53EF%u4EE5%u4E0E%u5176%u4ED6%u8BED%u8A00%u5728%u6808%u4E0A%u7684%u901F%u5EA6%u5411%u5AB2%u7F8E.%20%u4E3A%u4EC0%u4E48%3F%0A%u56E0%u4E3Ajava%u7684%u5783%u573E%u56DE%u6536%u5668%u4E00%u65B9%u9762%u4F1A%u91CA%u653E%u7A7A%u95F4%2C%u4E00%u65B9%u9762%u4F1A%u8FDB%u884C%u5185%u5B58%u788E%u7247%u6574%u7406.%20%u6240%u4EE5java%u521B%u5EFA%u5BF9%u8C61%u7684%u65F6%u5019%2C%u5728%u5806%u4E0A%u5206%u914D%u5185%u5B58%u53EA%u9700%u8981%u5C06%u5806%u6307%u9488%u79FB%u52A8%u4E00%u4E0B%2C%u5C31%u50CF%u5728%u6808%u4E0A%u90A3%u6837...%0A%0A**%u5F15%u7528%u8BA1%u6570%u5668%u548Cjava%u7684%u5BF9%u8C61%u5B58%u6D3B%u5224%u65AD%u673A%u5236**%0A%u5F88%u591A%u8BED%u8A00%u7684%u5783%u573E%u56DE%u6536%u673A%u5236%u9760%u7684%u662F%u5F15%u7528%u8BA1%u6570%u5668.%20%u8FD9%u662F%u4E00%u79CD%u7B80%u5355%u7684%u65B9%u6CD5%u6765%u5224%u65AD%u5BF9%u8C61%u662F%u5426%u5B58%u6D3B.%20%u6BCF%u4E2A%u5BF9%u8C61%u90FD%u6709%u4E00%u4E2A%u5F15%u7528%u8BA1%u6570%u5668%2C%u5982%u679C%u6709%u4E00%u4E2A%u5F15%u7528%u53D8%u91CF%u8FDE%u63A5%u5230%u8BE5%u5BF9%u8C61%u65F6%2C%u5219%2C%u8BE5%u5BF9%u8C61%u7684%u5F15%u7528%u8BA1%u6570%u5668%u52A01.%20%u5F53%u5F15%u7528%u79BB%u5F00%u4F5C%u7528%u57DF%u6216%u8005%u88AB%u7F6E%u4E3Anull%u7684%u65F6%u5019%2C%u5F15%u7528%u8BA1%u65F6%u5668%u51CF1.%20%u5982%u679C%u5F15%u7528%u8BA1%u6570%u5668%u4E3A0%2C%u5219%u5224%u5B9A%u8BE5%u5BF9%u8C61%u5931%u6D3B.%28%u6709%u53EF%u80FD%u4F1A%u88AB%u7ACB%u5373%u6E05%u7406%29.%20%u4F46%u662F%u5982%u679C%u51FA%u73B0%u5FAA%u73AF%u5F15%u7528%u7684%u65F6%u5019%2C%u5355%u7EAF%u9760%u5F15%u7528%u8BA1%u6570%u5668%u5C31%u4E0D%u884C%u4E86.%20%0A%0A%u6240%u8C13%u5FAA%u73AF%u5F15%u7528%2C%u5C31%u50CF%u4E0B%u9762%u8FD9%u4E2A%u6837%u5B50%0A%60%60%60java%0Apublic%20void%20buidDog%28%29%7B%0A%09Dog%20newDog%20%3D%20new%20Dog%28%29%3B%0A%20%20%20%20Tail%20newTail%20%3D%20new%20Tail%28%29%3B%0A%20%20%20%20newDog.tail%20%3D%20newTail%3B%0A%20%20%20%20newTail.dog%20%3D%20newDog%3B%0A%7D%0A%60%60%60%0A%0A%u5404%u79CDjvm%u7684%u5B9E%u73B0%u4E2D%u597D%u50CF%u90FD%u6CA1%u6709%u91C7%u7528%u5F15%u7528%u8BA1%u65F6%u5668%u7684%u65B9%u5F0F.%20%u800C%u662F%u91C7%u7528%u4E86%u4E00%u79CD%u66F4%u5FEB%u7684%u65B9%u5F0F.%20%u601D%u8DEF%u662F%3A%u6240%u6709%u6D3B%u7684%u5BF9%u8C61%u4E0D%u7BA1%u662F%u88AB%u5F15%u7528%u4E86%u591A%u5C11%u5C42%2C%u4E00%u5B9A%u53EF%u4EE5%u8FFD%u6EAF%u5230%u5806%u6808%u6216%u8005%u9759%u6001%u5B58%u50A8%u533A%u4E4B%u4E2D%u7684%u5F15%u7528.%20%u90A3%u5982%u679C%u4ECE%u5806%u6808%u548C%u9759%u6001%u5B58%u50A8%u533A%u53CD%u5411%u904D%u5386%u7684%u8BDD%2C%u5C31%u53EF%u4EE5%u627E%u5230%u6240%u6709%u6D3B%u7740%u7684%u5BF9%u8C61.%20%u90A3%u8FD9%u6837%u5C31%u89E3%u51B3%u4E86%u5FAA%u73AF%u5F15%u7528%u7684%u95EE%u9898.%20%0A%0A**jvm%u7684%u5783%u573E%u56DE%u6536%u673A%u5236**%0Ajvm%u91C7%u7528%u4E86%u4E00%u79CD%u81EA%u9002%u5E94%u7684%u5783%u573E%u56DE%u6536%u6280%u672F.%20%u6709%u4E00%u79CD%u505A%u6CD5%u53EB%u505Astop%20and%20copy%2C%u7B80%u5355%u8BF4%u5C31%u662F%2C%u5148%u6682%u505C%u7A0B%u5E8F%2C%u4F46%u540E%u5C06%u6240%u6709%u5B58%u6D3B%u7684%u5BF9%u8C61%u590D%u5236%u5230%u53E6%u5916%u4E00%u4E2A%u5806%u4E2D.%u5F53%u7136%2C%u90A3%u6CA1%u6709%u88AB%u590D%u5236%u7684%u5C31%u5168%u662F%u5783%u573E%2C%u5F53%u5BF9%u8C61%u88AB%u590D%u5236%u5230%u65B0%u7684%u5806%u4E2D%u7684%u65F6%u5019%u80AF%u5B9A%u662F%u7D27%u51D1%u6392%u5217%u7684%2C%u5C31%u4E0D%u4F1A%u5B58%u5728%u5185%u5B58%u788E%u7247%u7684%u95EE%u9898.%20%u5F53%u5BF9%u8C61%u4ECE%u4E00%u4E2A%u5806%u88AB%u590D%u5236%u5230%u53E6%u5916%u4E00%u4E2A%u5806%u4E4B%u540E%2C%u90A3%u6307%u5411%u5B83%u7684%u5F15%u7528%u5C31%u5E94%u8BE5%u88AB%u4FEE%u6B63.%20%20%20%u9759%u6001%u5B58%u50A8%u533A%u548C%u6808%u4E0A%u7684%u5F15%u7528%u53EF%u4EE5%u76F4%u63A5%u88AB%u4FEE%u6B63.%20%u4F46%u662F%u8FD8%u6709%u4E00%u4E9B%u5176%u4ED6%u7684%u5F15%u7528%u4F1A%u5728%u4E4B%u540E%u7684%u904D%u5386%u4E2D%u88AB%u4FEE%u6B63.%20%0A%0A%u4F46%u662F%u8FD9%u79CD%u65B9%u5F0F%u6709%u4E24%u4E2A%u5F88%u5927%u7684%u95EE%u9898%3A%0A1.%20%u5F00%u9500%u5F88%u5927.%20%u56E0%u4E3A%u9700%u8981%u4E24%u4E2A%u5806.%u5185%u5B58%u7A7A%u95F4%u5E73%u767D%u65E0%u6545%u7684%u591A%u4E86%u4E00%u500D.%20%0A2.%20%u7A0B%u5E8F%u5728%u7A33%u5B9A%u4E4B%u540E%2C%u5F88%u5C11%2C%u751A%u81F3%u6CA1%u6709%u5783%u573E.%20%u90A3%u8FD9%u79CD%u505A%u6CD5%u5C31%u662F%u5927%u70AE%u6253%u868A%u5B50%u4E86.%20%0A%0A%u9488%u5BF9%u7B2C%u4E00%u70B9%2C%u901A%u5E38%u7684%u505A%u6CD5%u662F%2C%u5C06%u5806%u5185%u5B58%u5212%u5206%u4E3A%u51E0%u4E2A%u5927%u7684%u533A%u5757%2C%u7136%u540E%u5728%u8FD9%u51E0%u4E2A%u5927%u7684%u533A%u5757%u4E4B%u95F4%u5012%u817E.%20%u800C%u5173%u4E8E%u7B2C%u4E8C%u70B9%2C%u4F1A%u5F15%u5165%u4E00%u4E2A%u65B0%u7684%u673A%u5236%2C%u53EBmark%20and%20sweep.%20%u8FD9%u79CD%u65B9%u5F0F%u5F88%u6162%2C%u4F46%u662F%u5982%u679C%u5DF2%u7ECF%u77E5%u9053%u53EA%u6709%u5F88%u5C11%u7684%u5783%u573E%u7684%u65F6%u5019%2C%u4F7F%u7528%u5B83%u8FD8%u662F%u5408%u7406%u7684.%20%u9996%u5148%2C%u4ECE%u6808%u548C%u9759%u6001%u5B58%u50A8%u533A%u5F00%u59CB%u904D%u5386%2C%u627E%u5230%u6240%u6709%u5B58%u6D3B%u7684%u5BF9%u8C61%2C%u6BCF%u627E%u5230%u4E00%u4E2A%u5C31%u7ED9%u4E00%u4E2A%u6807%u8BB0%2C%u8868%u793A%u8FD9%u4E2A%u5BF9%u8C61%u662F%u6D3B%u7740%u7684.%20%u8FD9%u65F6%u5019%u4E0D%u8FDB%u884C%u6E05%u7406%2C%u7B49%u904D%u5386%u5B8C%2C%u6240%u6709%u6D3B%u7740%u7684%u5BF9%u8C61%u90FD%u6709%u6807%u8BB0%u4E86.%u7136%u540E%u91CA%u653E%u6240%u6709%u6CA1%u6709%u6807%u8BB0%u7684%u5BF9%u8C61.%20%u8FD9%u4F1A%u4F7F%u5185%u5B58%u4E0D%u8FDE%u7EED.%20%u5982%u679C%u5783%u573E%u56DE%u6536%u5668%u60F3%u8981%u5F97%u5230%u8FDE%u7EED%u7A7A%u95F4%u7684%2C%u4F1A%u8FDB%u884C%u5185%u5B58%u6574%u7406.%20%u540C%u6837%u8FD9%u4E2A%u4E5F%u9700%u8981%u5728%u7A0B%u5E8F%u6682%u505C%u7684%u65F6%u5019%u8FDB%u884C.%20%0A%0A%0Ajvm%u4E2D%u5185%u5B58%u5206%u914D%u662F%u4EE5%u8F83%u5927%u7684%u5757%u4E3A%u5355%u4F4D%u7684.%20%u5982%u679C%u5BF9%u8C61%u6BD4%u8F83%u5927%2C%u90A3%u4E48%u5B83%u4F1A%u5360%u7528%u5355%u72EC%u7684%u5757.%20%u5BF9%u4E8Estop%20and%20copy%u8FD9%u79CD%u65B9%u5F0F%2C%u4E25%u683C%u610F%u4E49%u4E0A%u8BF4%2C%u5FC5%u987B%u628A%u6240%u6709%u6D3B%u7740%u7684%u5BF9%u8C61%u4ECE%u65E7%u7684%u5806%u4E2D%u590D%u5236%u5230%u65B0%u7684%u5806%u4E2D.%20%u8FD9%u4F1A%u5BFC%u81F4%u5927%u91CF%u7684%u5185%u5B58%u590D%u5236%u884C%u4E3A.%20%u6709%u4E86%u5757%u4E4B%u540E%2C%u5783%u573E%u56DE%u6536%u5668%u5C31%u53EF%u4EE5%u5F80%u5E9F%u5F03%u7684%u5757%u4E2D%u62F7%u8D1D%u5BF9%u8C61.%20%u6BCF%u4E2A%u5757%u90FD%u4F1A%u6709%u4E00%u4E2Ageneration%20count%u6765%u8BB0%u5F55%u5B83%u662F%u5426%u662F%u5B58%u6D3B%u7684.%20%u5982%u679C%u5757%u5728%u67D0%u5904%u88AB%u5F15%u7528%2C%u5176%u4EE3%u6570%u4F1A%u589E%u52A0.%20%u5783%u573E%u56DE%u6536%u5668%u9488%u5BF9%u4E0A%u6B21%u6E05%u7406%u4E4B%u540E%u7684%u5757%u8FDB%u884C%u6574%u7406.%u5927%u578B%u5BF9%u8C61%u4E0D%u4F1A%u88AB%u590D%u5236.%u4F46%u662F%u5176%u4EE3%u6570%u4F1A%u589E%u52A0.%u5185%u542B%u5C0F%u578B%u5BF9%u8C61%u7684%u5757%u4F1A%u88AB%u590D%u5236%u548C%u6574%u7406.%20%20%u8FD9%u5BF9%u5904%u7406%u5904%u7406%u5927%u91CF%u7684%u77ED%u547D%u7684%u4E34%u65F6%u5BF9%u8C61%u5F88%u6709%u5E2E%u52A9.%20%0A%3E%u8FD9%u4E00%u6BB5%u4E0D%u662F%u5F88%u7406%u89E3%2C%u610F%u601D%u662F%u4E0D%u662F%2C%u5982%u679C%u4E00%u4E2A%u5BF9%u8C61%u5360%u6EE1%u4E86%u4E00%u4E2A%u5757%2C%u5C31%u8BA4%u4E3A%u5B83%u662F%u4E2A%u5927%u7684%u5BF9%u8C61.%20%u90A3%u4E48%u8FD9%u79CD%u5355%u72EC%u5360%u4E00%u4E2A%u5757%u7684%u6216%u8005%u7684%u5927%u5BF9%u8C61%u5728%u5783%u573E%u56DE%u6536%u7684%u65F6%u5019%u5C31%u6CA1%u6709%u5FC5%u8981%u518D%u88AB%u590D%u5236%u5230%u53E6%u5916%u4E00%u4E2A%u65B0%u5757%u4E2D%u4E86.%20%u6240%u4EE5%u4E0D%u53BB%u5904%u7406%u5B83.%20%u800C%u5BF9%u4E8E%u6CA1%u6709%u5360%u6EE1%u4E00%u4E2A%u5757%u7684%u5C0F%u5BF9%u8C61%2C%u4F9D%u65E7%u4F1A%u8FDB%u884C%u590D%u5236%u548C%u6574%u7406.%20%0A%0A%u5982%u679C%u5BF9%u8C61%u6BD4%u8F83%u7A33%u5B9A%2C%u90A3%u4E48%u5783%u573E%u56DE%u6536%u5668%u6548%u7387%u964D%u4F4E%u7684%u8BDD%2C%u4F1A%u5207%u6362%u5230mark%20and%20sweep%u65B9%u5F0F.%20%0A%0A

TIJ读书笔记06-终结清理和垃圾回收的更多相关文章

  1. CLR via C# 读书笔记-21.托管堆和垃圾回收

    前言 近段时间工作需要用到了这块知识,遂加急补了一下基础,CLR中这一章节反复看了好多遍,得知一二,便记录下来,给自己做一个学习记录,也希望不对地方能够得到补充指点. 1,.托管代码和非托管代码的区别 ...

  2. TIJ读书笔记03-初始化和构造器

      TIJ读书笔记03-初始化和构造器 初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源. 构造器在创建一个类的实例的 ...

  3. TIJ读书笔记08-数组的初始化和可变长参数形参

    TIJ读书笔记08-数组的初始化和可变参数形参 数组 数组的声明 数组的初始化和赋值 可变参数列表 数组 相同类型的,用一个标识符名称封装到一起的一个对象序列或者基本数据类型序列叫数组.(多么严谨的概 ...

  4. TIJ读书笔记05-this关键字

    TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...

  5. TIJ读书笔记04-方法重载

    TIJ读书笔记04-方法重载 为什么会有方法重载 方法签名 如何区分重载 关于基本类型的重载 为什么会有方法重载 OOP的编程方式就是让程序的逻辑更加接近现实世界的逻辑. 而在现实世界中,自然语言本身 ...

  6. 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)

    强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...

  7. TIJ读书笔记02-控制执行流程

      TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决 ...

  8. TIJ读书笔记01-操作符

      TIJ读书笔记01-操作符 概述 关系操作符和逻辑操作符 位操作符 类型转换 概述 操作符 操作符接受一个或多个参数,并生成一个新值. 换句话说操作符作用于操作数,生成一个新值.有些操作符会改变操 ...

  9. Java编程思想学习笔记_1(Java内存和垃圾回收)

    1.Java中对象的存储数据的地方: 共有五个不同的地方可以存储数据. 1)寄存器.最快,因为位于处理器的内部,寄存器按需求分配,不能直接控制. 2)堆栈.位于通用RAM,通过堆栈指针可以从处理器那里 ...

随机推荐

  1. 2016年12月11日 php面向对象

    面向对象 1.类(由众多对象中抽象出来的) 2.对象(一切皆对象,由类实例化出来的). 类: 求圆的面积 面向过程的方式 1.将圆抽象为一个类 2.实例化对象 class Qiu { var $ban ...

  2. [转]Redis实现分析

    Redis实现分析 浏览次数:1018次 KITERUNNER_T 2014年10月19日 字号: 大 中 小 分享到: QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 开心网 更多 1   1 环境准 ...

  3. 图片标签img中,为什么使用alt属性没用

    alt属性 alt属性是为了给那些不能看到你文档中图像的浏览者提供文字说明的.所以alt属性的本意是用于替换图像,而不是为图像提供额外说明的,但是,在ie浏览器中,alt属性会变成文字提示,这本身是一 ...

  4. select 通过jq赋值

    <select name="F_YSBAQLX" onchange="selectvalue()" id="lista" prompt ...

  5. 【 D3.js 入门系列 --- 1 】 第一个程序HelloWorld

    下面开始用D3.js处理第一个简单问题,先看下面的代码: <html> <head> <meta charset="utf-8"> <ti ...

  6. LeetCode() Min Stack 不知道哪里不对,留待。

    class MinStack { public: MinStack() { coll.resize(2); } void push(int x) { if(index == coll.size()-1 ...

  7. POJ-3261 Milk Patterns(后缀数组)

    题目大意:找出至少出现K次的子串的最长长度. 题目分析:二分枚举长度x,判断有没有最长公共前缀不小于x的并且连续出现了至少k次的有序子串区间. 代码如下: # include<iostream& ...

  8. 2016HUAS_ACM暑假集训2E - I Hate It

    又是一个线段树的应用,不过跟上一题(D-排兵布阵)不同的是,这次是求某段区间上的最值,而不是某段区间和.当然,数据更新是必须的.D题注释已经很详细了,所以这题注释少点. 大致题意:给你N个已经排好的学 ...

  9. [vijos P1880]ファーラの力

    据说这是一道 JOI 的题?反正我觉着挺好的喵~ 题目看起来十分可怕,但是代码还是很短的 显而易见的,ans 因分为3个部分:1.中途增加光压的时间 2.中途减少光压的时间 3. 所有路程的总时间 发 ...

  10. 抓包工具PowerSniff-0.1

    做这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,各种工具用下来或多或少不顺手.以前写的外挂也都是手工 ...