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. xpcall 安全调用

    -- xpall (调用函数f, 错误函数fe[, 参数]) function fun(a,b)   -- 这里的参数没什么实际作用,就是展示下用法    return a / bend -- xpc ...

  2. RBL开发笔记一

    从这个系列开始  陆续记录整个RBL开发的过程   废话不多说   直入主题 10:54:53   2014-08-25 今天开发任务: RBL.h  的框架搭建出来   包括RBLServer RB ...

  3. border-image(转载)

    本文转自:http://www.zhangxinxu.com/wordpress/2010/01/css3-border-image%E8%AF%A6%E8%A7%A3%E3%80%81%E5%BA% ...

  4. CodeBlocks 中fopen函数不支持命令 “r”

    //codeblocks #include<stdio.h> #include<stdlib.h> void main(void) { FILE *fp=NULL; if((f ...

  5. 转 通过js获取cookie的实例及简单分析

    今天review新人写的javascript代码的时候发现了很多的问题.这里以function getCookie(name){}为例. 其中比较典型的一个问题就是如何通过javascript获取co ...

  6. Linux之Qt利用Sqlite静态编译库(转)

    参考:http://www.linuxidc.com/Linux/2011-11/47465.htm sqlite3编译安装 ------------------------arm版--------- ...

  7. ES pom配置

    https://github.com/elastic/elasticsearch/issues/19415 <dependency> <groupId>org.elastics ...

  8. 转--Oracle 审计和测试操作

    http://blog.itpub.net/21605631/viewspace-759640/转 Oracle 审计和测试操作 :: 分类: Linux 1.1 相关参数 AUDIT_SYS_OPE ...

  9. C#中的async和await

    其实这两个关键字的功效比之前的异步方法调用有一个好处,那就是异步阻塞的方法可以有返回值.之前都是通过回调函数实现,执行上下文会切换,不过和这个执行过程类似.可以对这两个关键字这么理解:遇到async的 ...

  10. Oracle表空间不足

    Oracle临时表空间不足 -- 用户的缺省表空间.临时表空间 select t.username, t.default_tablespace, t.temporary_tablespace from ...