• GC的一个面试题


    今天看到一个gc面试题,觉得挺有意思的,写下来,给自己留个印象

    GC是在什么时候,对什么东西,做了什么事情?

    1、什么时候

      a、系统空闲的时候

      b、系统自身决定,不可预测的时候调用gc

      c、eden区满了调用minor gc(),升级到老年代的对象大于老年代剩余空间调用full gc()

      d、程序员不能具体控制时间,系统在不可预测的时间调用System.gc()函数的时候;当然可以通过调优,用NewRatio控制newObject和oldObject的比例,用MaxTenuringThreshold 控制进入oldObject的次数,使得oldObject 存储空间延迟达到full gc,从而使得计时器引发gc时间延迟OOM的时间延迟,以延长对象生存期。

    2、对什么东西

      a、不使用的对象

      b、超出作用域的对象,计步器为空的对象

      c、从gc root开始搜索,搜不到的对象

      d、超出了作用域或引用计数为空的对象;从gc root开始搜索找不到的对象,而且经过一次标记、清理,仍然没有复活的对象。

    3、做什么

      a、删除不使用的对象,腾出内存空间

      b、随便说说一些停止线程,运行finalize的说明

      c、说说eden区和from suvivor和to suvivor干啥用的,老年代中的标记清理和复制清理等等

      d、删除不使用的对象,回收内存空间;运行默认的finalize,当然程序员想立刻调用就用dipose调用以释放资源如文件句柄,JVM用from survivor、to survivor对它进行标记清理,对象序列化后也可以使它复活。

    是不是看到上面的答案,发现好多坑。

  • 相关阅读:
    使用CablleStatement调用存储过程
    权限问题
    全文检索lucene6.1的检索方式
    spring的JdbcTemplate
    spring使用注解开发
    IDEA的快捷键:
    IDEA里面的facets和artifacts的讲解
    Hibernate---criteria的具体使用列子
    关于操作日期函数及其取范围
    hibernate---crateria
  • 原文地址:https://www.cnblogs.com/gudulijia/p/6883650.html
Copyright © 2020-2023  润新知