zoukankan      html  css  js  c++  java
  • 面试之jvm垃圾回收机制

    每次面试的时候基本都会被问到jvm的垃圾回收,每次回答的都不是那么的完美,这次来总结一下。

    1、概念问题。

      a、什么是堆?存放所有的对象实例和数组,是垃圾回收的最主要区域,因此也叫“GC堆”。

      b、什么是栈?存放局部变量表(8中基本数据类型,对象引用类型),操作数栈,动态链接,方法出口信息等。

      c、什么是方法区?存放类信息,常量,静态变量,即时编译器编译后的代码,在HotSpot上也被成为“永久代”。

      d、什么是运行常量池?方法区的一部分,存放编译期存放的字面量和符号引用。

    2、相关问题、

      a、什么时候开始回收的。当jvm无法为一个对象分配空间出发Minor GC(Eden区满了),每次Minor GC会清理年轻带的内存。多次Minor GC后存活次数达到一定次数后会将这些            对象放到老年代,当升入老年代的对象大于老年代剩余空间发生Major GC,对老年代的对象进行回收。

      b、回收的对象是什么?从GC Roots开始进行可达性分析,经过第一次标记后,并调用finalize()方法没有复活的对象。每个对象的该方法只能被调用一次。

       GC Roots:虚拟机栈中的对象,方法区里面的静态对象,方法区常量池的对象,本地方法JNI应用对象。

      c、怎样回收的?新生代采用复制算法,将新生代分成一个Eden区,两个survivor区(存活率较高),老年代采用标记整理或者标记清理算法。

    未完待续。。。

  • 相关阅读:
    剑指Offer--复杂链表的复制
    剑指offer--第43题 1~n整数中1出现的次数
    剑指Offer--第50题 第一次只出现一次的字符
    剑指offer--扑克牌顺子
    MySQL免安装使用教程
    TortoiseGit的使用参考
    剑指Offer-- 第58题 翻转字符串
    剑指Offer-- 第45题 把数组排成最小数
    剑指Offer-- 第49题 丑数
    SpringBoot-data-jpa的简单使用
  • 原文地址:https://www.cnblogs.com/rookie111/p/7620566.html
Copyright © 2011-2022 走看看