zoukankan      html  css  js  c++  java
  • 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对它进行标记清理,对象序列化后也可以使它复活。

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

  • 相关阅读:
    Eclipse下,修改MAVEN 中央仓库地址,解决maven下载慢问题
    C语言中头文件string的用法
    Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
    Curl
    LDAP是什么
    Linux网络基本网络配置
    vim
    request,session,cookie的比较
    J2EE开发过程中遇到的问题
    实现弹出登录窗口
  • 原文地址:https://www.cnblogs.com/gudulijia/p/6883650.html
Copyright © 2011-2022 走看看