zoukankan      html  css  js  c++  java
  • 垃圾回收的一些简记

    垃圾回收

    1)负责释放无用内存;在jvm中优先级相当低的
    2)垃圾回收器(内存回收程序)并不总是工作,只有当内存资源告急时,垃圾回收器才会工作。
    3)即使垃圾回收器工作,finalize()也不一定得到执行,这是由于程序中的其他线程的优先级远远高于执行finalize()函数线程的优先级。或者说,如果是等待清理队列中如果又被调用,则不会执行finallize()。所以说:Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finallize()不一定会得到执行。
    4)finalize()在被JVM回收时会进行判断:1、如果此对象finalize未被执行过,则执行(此为第一次标记),并放置此对象到F-Queue中;此时,若在下次GC(garbage-collector)之前,重新与GC-ROOTS建立引用连接,则对象"复活",下次GC时如果此对象又被GC(此为第二次标记),则直接进行回收,因为finalize只执行一次。2、如果此对象finalize已经执行过一次,则在GC时不执行finalize,直接回收。也就是说,一个对象只有被标记两次才会被GC。
    5)JVM一旦启动,就会创建一个守护线程来监测是否需要有对象内存被释放。不用程序员自己创建线程。
    6)内存回收程序不可以在指定的时间释放内存对象:System.gc()只是提醒JVM可以进行一次FullGC,但是不知道什么时候真正执行的。
    7)进入DEAD的线程,还可以恢复,不一定就被GC回收。  

  • 相关阅读:
    bzoj1505 [NOI2004]小H的小屋
    最大值
    数学
    OI中的快速傅里叶变换(FFT)
    旅游规划
    加分二叉树
    浅谈 字符串hash
    二分的弟弟“三分”
    Trie树(c++)
    克鲁斯卡尔
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12021395.html
Copyright © 2011-2022 走看看