
jvm
jvm各种面试题
DaPao$
这个作者很懒,什么都没留下…
展开
-
对象什么时候进入老年代?
1.JVM会给对象增加一个年龄的计数器,对象每“熬过”一次GC,年龄就+1,待对象到达设置的阈值就会被移到老年代。2.大对象直接进入老年代3.如果survivor 区中相同年龄的所有对象大小总和大于survivor空间的一半年龄大于该年龄的对象直接进入老年代。...原创 2021-07-15 11:06:07 · 291 阅读 · 0 评论 -
JVM内存结构?栈和堆的区别?堆的结构?
1.JVM内存结构类加载器子系统,运行时数据区,执行引擎运行时数据区包括:方法区、虚拟机栈、本地方法栈、虚拟机栈、程序计数器方法区:用于储存已被虚拟机加载的类信息、常量、静态变量等。虚拟机栈:用于储存局部变量表、操作数栈、动态链接,方法出口等。本地方法栈:虚拟机栈执行Java方法服务,本地方法栈为虚拟机使用到native方法服务。Java堆:存放对象实例,垃圾收集器管理的主要区域。程序计数器:主要用于记录当前线程执行到那块。2.区别1)管理方式不同,栈由操作系统自动分配释放,无需手动控原创 2021-07-15 10:49:33 · 215 阅读 · 0 评论 -
为什么要有新生代和老年代?
原因:分代后,将新创建的对象放到某一地方,当GC的时候先把“朝生夕死”的对象区域进行回收,从而避免了全局搜索。年老代存放JVM认为生命周期比较长的对象,内存大小相对会较大,垃圾回收也没那么频繁,新生区由于对象产生的比较多而且大都是朝生夕死的,直接采用复制算法,而养老区生命很强,则采用标记-清理,针对不同情况使用不同算法。...原创 2021-07-15 10:58:03 · 279 阅读 · 0 评论 -
对象在JVM中是如何储存的?
1.判断对象对象的类是否加载、链接、初始化。2.为对象分配内存。3.处理并发安全问题。4.初始化分配到的空间。5.设置对象的对象头。6.执行init方法初始化原创 2021-07-15 11:09:08 · 258 阅读 · 0 评论 -
什么是GC,为什么需要GC?
GC(Garbage Collection ),垃圾收集,回收内存中的垃圾。原因:1.不进行垃圾回收,可能会导致内存不够用。2.除了释放无用的对象,GC也可以清除内存中的记录碎片,进行碎片整理, 将堆内存移到堆的另一端,以便JVM将整理出的内存分配给新的对象。3.现在应用程序所对应的业务,用户群体日益强大,没有GC无法保证应用程序的正常运行。...原创 2021-07-15 10:28:28 · 1802 阅读 · 0 评论 -
对象头里有什么?
包含两部分:1.运行时元数据(Mark word):哈希值GC分代年龄锁状态标志线程持有的锁偏向线程ID偏向时间戳2.类型指针—》指向类元数据如果是数组,还需指明其长度。原创 2021-07-15 11:14:05 · 151 阅读 · 0 评论