TIJ读书笔记06-终结清理和垃圾回收
java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java的垃圾回收回收的是什么? 垃圾回收器只释放那些由new分配的内存. 注意这个限制,jvm只负责回收内存,而且这部分内存是通过new关键字来创建的. 所以像什么数据库连接,IO等等是需要程序员去释放的.
关于java的垃圾回收,简单来说有三点:
- 对象可能不会被垃圾回收
- 垃圾回收不等于析构
- 垃圾回收只和内存相关.
垃圾回收是需要消耗资源的. 所以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,简单说就是,先暂停程序,但后将所有存活的对象复制到另外一个堆中.当然,那没有被复制的就全是垃圾,当对象被复制到新的堆中的时候肯定是紧凑排列的,就不会存在内存碎片的问题. 当对象从一个堆被复制到另外一个堆之后,那指向它的引用就应该被修正. 静态存储区和栈上的引用可以直接被修正. 但是还有一些其他的引用会在之后的遍历中被修正.
但是这种方式有两个很大的问题:
- 开销很大. 因为需要两个堆.内存空间平白无故的多了一倍.
- 程序在稳定之后,很少,甚至没有垃圾. 那这种做法就是大炮打蚊子了.
针对第一点,通常的做法是,将堆内存划分为几个大的区块,然后在这几个大的区块之间倒腾. 而关于第二点,会引入一个新的机制,叫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-终结清理和垃圾回收的更多相关文章
- CLR via C# 读书笔记-21.托管堆和垃圾回收
前言 近段时间工作需要用到了这块知识,遂加急补了一下基础,CLR中这一章节反复看了好多遍,得知一二,便记录下来,给自己做一个学习记录,也希望不对地方能够得到补充指点. 1,.托管代码和非托管代码的区别 ...
- TIJ读书笔记03-初始化和构造器
TIJ读书笔记03-初始化和构造器 初始化和清理是涉及安全的两个问题,如果对象不能正确的初始化会引起很多错误,比如空指针异常等,如果不能恰当及时的清理,会占用过多资源. 构造器在创建一个类的实例的 ...
- TIJ读书笔记08-数组的初始化和可变长参数形参
TIJ读书笔记08-数组的初始化和可变参数形参 数组 数组的声明 数组的初始化和赋值 可变参数列表 数组 相同类型的,用一个标识符名称封装到一起的一个对象序列或者基本数据类型序列叫数组.(多么严谨的概 ...
- TIJ读书笔记05-this关键字
TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...
- TIJ读书笔记04-方法重载
TIJ读书笔记04-方法重载 为什么会有方法重载 方法签名 如何区分重载 关于基本类型的重载 为什么会有方法重载 OOP的编程方式就是让程序的逻辑更加接近现实世界的逻辑. 而在现实世界中,自然语言本身 ...
- 强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning)
强化学习读书笔记 - 06~07 - 时序差分学习(Temporal-Difference Learning) 学习笔记: Reinforcement Learning: An Introductio ...
- TIJ读书笔记02-控制执行流程
TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决 ...
- TIJ读书笔记01-操作符
TIJ读书笔记01-操作符 概述 关系操作符和逻辑操作符 位操作符 类型转换 概述 操作符 操作符接受一个或多个参数,并生成一个新值. 换句话说操作符作用于操作数,生成一个新值.有些操作符会改变操 ...
- Java编程思想学习笔记_1(Java内存和垃圾回收)
1.Java中对象的存储数据的地方: 共有五个不同的地方可以存储数据. 1)寄存器.最快,因为位于处理器的内部,寄存器按需求分配,不能直接控制. 2)堆栈.位于通用RAM,通过堆栈指针可以从处理器那里 ...
随机推荐
- .net解决数据导出excel时的格式问题
在项目中一般都需要将报表数据导出到EXCEL中,但经常出现导出长串数据(如身份证)到EXCEL中后显示为科学计数法的格式,或者报表中显示为001的数据导出到Excel后成了1的格式. 下面简单介绍一下 ...
- 搜狗输入法弹出搜狐新闻的解决办法(sohunews.exe)
狗输入法弹出搜狐新闻的解决办法(sohunews.exe) 1.找到搜狗输入法的安装目录(一般是C:\program files\sougou input\版本号\)2.右键点击sohunews.ex ...
- 腾讯优测优分享 | 这些年,我们追过的 fiddler
腾讯优测是专业的移动云测试平台,提供全面兼容性测试,远程真机租用,漏洞分析等多维度的测试服务,旗下优分享提供大量的移动研发及测试相关的干货! 一.fiddler原理简介 fiddler是目前最强大最好 ...
- codeForce-589D Boulevard(判断线段是否相交)
题目大意:n个人.一个区间.每个人都会在某个时间段内按相同的速度(所有人的速度都一样,都是1或-1)在他的区间内从一个端点走到另一个端点(只走一次).问每个人会与几个人碰面. 题目分析:将时间看成一个 ...
- 建造者模式(Builder)
建造者模式(Builder)将复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 建造者模式通常包括下面几个角色: 1. builder:给出一个抽象接口,以规范产品对象的各个组成成分的 ...
- js中的this指针(四)
当一个函数前面加上 new 操作符来调用,此时 this 会被绑定到新生成的对象上. 这既是所谓的构造函数调用模式.
- byte与char的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char ...
- MySQL各逻辑模块工作配合
在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的.接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后 ...
- Oracle调整联机日志大小
近期一个项目反馈月底高峰期时系统整体性能下降,抓取对应的AWR和ASH查看,等待事件排第一位的竟然是redo日志切换.进一步看每秒的日志量是5M多,而日志文件大小仅有200M.建议项目上调整日志大小, ...
- knockout 学习实例3 html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...