文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十一)

⑦②. 在java中,可作为GC Roots的对象有?注意:除了这些固定的GC Roots集合之外,根据用户所选用的垃圾收集器以及当前回收的内存区域不同,还可以有其他对象临时加入,共同构架完成整GC Roots 集合。比如: 分代收集和局部回收(面试加分项)解释:如果只针对java堆中的某一区域进行垃圾回收(比如: 典型的只针对新生代),必须考虑到内存区域是虚拟机自己的实现细节,更不是孤立封闭的....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十一)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十)

⑥②. Java对象头里有什么?①. 对象标记Mark Word(哈希值(HashCode )、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳)②. 类元信息⑥③. 谈谈你对执行引擎的理解?①. 执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以②. 解释器(负责响应时间):当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(十)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(九)

⑤①. Minor GC | Major GC | Full GC①. Minor GC 在Eden伊甸园区满的时候会触发,发生在新生代中②. Major GC 在老年代中满了会进行触发,发生在老年代,major gc的时间比minor gc时间长③. Full GC 发生在整个堆中⑤②. 什么时候会触发minor gc?在Eden伊甸园区满的时候会触发⑤③. 是不是所有对象都分配在堆中?几乎所....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(九)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(八)

④②. 垃圾回收是否会涉及到虚拟机栈?①. 不会;垃圾回收只会涉及到方法区和堆中,方法区和堆也会存在溢出的可能②. 程序计数器,只记录运行下一行的地址,不存在溢出和垃圾回收③. 虚拟机栈和本地方法栈,都是只涉及压栈和出栈,可能存在栈溢出,不存在垃圾回收④③. 方法中定义的局部变量是否线程安全?如果局部变量在内部产生并在内部消亡的,那就是线程安全的④④. 什么情况下会发生栈内存溢出?①. 局部数组....

文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(七)

③⑥. 谈谈你对操作数栈的理解?①. 我们说Java虚拟机的解释引擎是基于栈的执行引擎,其中的栈指的就是操作数栈②. 每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈③. 每一个操作数栈都会拥有一个明确的栈深度用于存储数值,其所需的最大深度在编译期就定义好了,保存在方法的Code属性中,为max_stack的值④.....

文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(六)

③①. PC寄存器为什么设定为线程私有?为了能够准确记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器③①. 说说你对本地方法栈的理解①.本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,Java诞生的时候是C/C++横行的时候,要想立足,必须由调用C/C++程序,于是就在内存中专门开辟了一块区域处理标记为native的代码,....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(六)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(五)

②⑤. 既然Tomcat不遵循双亲委派机制,那么如果我自己定义一个恶意的HashMap,会不会有风险呢显然不会有风险,如果有,Tomcat都运行这么多年了,那能不改进吗?tomcat不遵循双亲委派机制,只是自定义的classLoader顺序不同,但顶层还是相同的,还是要去顶层请求classloader②⑥. 我们思考一下:Tomcat是个web容器,那么它要解决什么问题?一个web容器可能需要部....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(五)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(四)

⑩⑧. 字节码文件中都有什么?①. 魔术、版本(副版本、主版本)、常量池(字节码文件的基石)、访问标识、类索引|父类索引|接口索引集合、字段表集合、方法表集合、属性表集合⑩⑨. 常量池中都有什么?①. 字面量和符号引号②. 字面量:Java中的常量和字符串③. 符号引号:类和接口的全限定名属性的名称和修饰符方法的名称和修饰符②0.JVM的永久代中会发生垃圾回收么?①. 方法区中的垃圾回收主要是:....

文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(三)

⑩②. 双亲委派机制的优势①. 避免类的重复加载,确保一个类的全局唯一性(当父ClassLoader已经加载了该类的时候,就没有必要子ClassLoader再加载一次)比如:我们如果是引导类加载器加载了,就没必要再一次使用扩展类加载器进行加载②. 保护程序安全,防止核心API被随意篡改⑩③. 双亲委托模式的弊端检查类是否加载的委托过程是单向的,这个方式虽然从结构上说比较清晰,使各个ClassLo....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(三)
文章 2022-01-07 来自:开发者社区

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(二)

⑧. 判定一个常量是否"废弃”还是相对简单,而要判定一个类型是否属于"不再被使用的类”的条件就比较苛刻了。需要同时满足下面三个条件①. 该类所有的实例都已经被回收。也就是Java堆中不存在该类及其任何派生子类的实例②. 加载该类的类加载器已经被回收。这个条件除非是精心设计的可替换类加载器的场景。如JSP重加载等。否则通常是很难达成的③. 该类对应的Java.lang.Class对象没有在任何地方....

JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎的灵虚拷问,你能坚持到第几问?(二)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐