一、jvm
1. 老年代的垃圾回收器的原理
老年代垃圾回收器的例子有标记-压缩算法,即标记出哪些是垃圾对象,然后把这些对象清理掉,最后通过压缩整理内存,减少内存碎片。
2. cms的三色标记法
CMS(Concurrent Mark Sweep)垃圾回收器的三色标记法,是一种并发标记算法,它将对象分为三种颜色,分别是黑、灰、白。黑色表示该对象已经被标记过,且该对象下的属性也全部都被标记过;灰色表示该对象已经被垃圾收集器扫描过,但是对象中还存在没有扫描的引用;白色表示该对象没有被垃圾收集器访问过。
3. 一个类 A,现在去 new A 对象,在 jvm 级别经历了什么
当你在Java中创建一个对象时,JVM会经历以下步骤:
- 类加载:JVM首先需要加载类A的字节码文件。类加载器负责读取.class文件,将其转换为Java类,并存储在方法区中。
- 内存分配:JVM为新创建的对象分配内存。这个内存通常在Java堆内存中,具体在Eden区。JVM会根据对象的类型和大小,为其分配相应的内存空间。
- 初始化:分配内存后,JVM会执行对象的构造函数,即类A的方法,来初始化对象。此步骤涉及执行类的构造函数以及任何初始化块。
- 链接:在对象初始化完成后,JVM会进行链接操作,包括验证、准备(为类的静态变量分配内存并初始化为默认值)和解析(把类的符号引用转换为直接引用)。
- 可用:一旦对象创建并初始化完成,它就可以被你的Java代码使用。
注意,以上步骤在并发环境中可能会有所不同。例如,多线程环境下可能会出现线程安全问题,需要使用锁等机制来保证正确性。此外,JVM的不同实现和配置可能会对具体步骤和顺序有所影响。