• 垃圾回收的一些简记


    垃圾回收

    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回收。  

  • 相关阅读:
    c语言 malloc和free的实现
    gdb调试命令总结
    pycharm使用教程
    flask--relationship
    安装部署问题
    Flask的request.form和request.data有什么区别
    装饰器
    flask 权限
    flask--session
    数据库-触发器
  • 原文地址:https://www.cnblogs.com/yangrongkuan/p/12021395.html
Copyright © 2020-2023  润新知