栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java虚拟机面试知识(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java虚拟机面试知识(一)

jvm构成
  • 程序计数器(线程私有):记录虚拟机字节码指令的地址
  • jvm stack/java虚拟机栈(线程私有):记录java方法,一个方法一个栈帧,里面记录局部变量表,方法出口等信息
  • 本地方法栈(线程私有):存本地方法
  • java堆:所有对象实例放在这里。GC回收主要区域。分为:新生代,老年代,永久代。内存动态扩展,可不连续。
  • 方法区:已经被加载的类信息,常量,静态变量等。内存动态扩展,可不连续。
    5.1运行时常量池: class文件的常量池在类加载后会被放入这个区域
垃圾回收:如何判断一个对象可被回收?

1 引用计数器
2 可达性:用GC Roots作为起点搜索,能达到的都是可用的,不可用的回收
3 引用类型
4 方法区回收
5 finalize()

垃圾收集算法

1.标记-清除
把需要回收的对象标记,清除
缺点:1,标记和清除过程效率不高2,产生大量内存碎片,导致无法给大对象分配内存
2复制
把内存划分为大小相等的两块,每次就用一块,内存用完了,就把还活着的对象复制到另一块,再把原先的内存空间清理。
现在很多商业虚拟机都用这种算法回收新生代。不是平均分,而是分成一个大的Eden和两个小的Survior,每次用的时候用前俩,回收的时候把前两个钟还活的对象放到后面的Survior中,HotSpot VM比例是:8:1。保证内存利用率90%,如果每次回收多余10%的存活对象,就借用老年代进行分配担保
3.标记-整理
让所有存活的对象都向一端移动
4.分代收集
根据对象存活周期将内存划分为几块,不痛快采用适当的收集算法
一般把java堆分为新生代和老生代
新生代:复制算法
老年代:标记清理或者标记整理

垃圾收集器
  • 串行垃圾回收器Serial:单线程,只用一个线程进行垃圾回收,会暂停所有用户线程,不适合服务器环境
  • 并行垃圾回收器Parallel:多个垃圾收集线程并行工作,用户线程是暂停的,
  • 并发垃圾回收器(CMS):用户线程和垃圾收集线程同时执行(也可以交替执行),不需要停顿用户线程。使用响应时间有要求的场景
  • G1垃圾回收器:将堆内存分割成不同的区域,然后并发的对其进行垃圾回收
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/572867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号