Java每日5问(第29天)

类加载器有哪些?

启动类加载器:Bootstrap ClassLoader,负责加载存放在 JDK\jre\lib(JDK 代表 JDK 的安装目录, 下同)下,或被-Xbootclasspath 参数指定的路径中的,并且能被虚拟机识别的类库
扩展类加载器:Extension ClassLoader,该加载器由 sun.misc.LauncherKaTeX parse error: Undefined control sequence: \jre at position 28: …er 实现, 它负责加载 DK\̲j̲r̲e̲\lib\ext 目录中,或者…AppClassLoader
来实现,它负责加载用户类路径(ClassPath)所指定的类,开发者可以直接使用该类加载器

Java 对象创建过程?

  1. JVM 遇到一条新建对象的指令时首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用。然后加载这个类(类加载过程在后边讲)
  2. 为对象分配内存。一种办法“指针碰撞”、一种办法“空闲列表”,最终常用的办法“本地线程 缓冲分配(TLAB)”
  3. 将除对象头外的对象内存空间初始化为 0
  4. 对对象头进行必要设置

Java 中类的生命周期使什么?

1、加载,查找并加载类的二进制数据,在 Java 堆中也创建一个 java.lang.Class 类的对象
2、连接,连接又包含三块内容:验证、准备、初始化。 1)验证,文件格式、元数据、字节码、符号引用验证; 2)准备,为类的静态变量分配内存,并将其初始化为默认值; 3) 解析,把类中的符号引用转换为直接引用
3、初始化,为类的静态变量赋予正确的初始值
4、使用,new 出对象程序中使用
5、卸载,执行垃圾回收

都有哪些垃圾回收器?

Serial 收集器,串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿, 只使用一个线程去回收。
ParNew 收集器,ParNew 收集器其实就是 Serial 收集器的多线程版本。
Parallel 收集器,Parallel Scavenge 收集器类似 ParNew 收集器,Parallel 收集器更关注系统的吞吐量。
Parallel Old 收集器,Parallel Old 是 Parallel Scavenge 收集器的老年代版本,使用多线程和“标记-整理”算法
CMS 收集器,CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。

G1 收集器,G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足 GC 停顿时间要求的同时,还具备高吞吐量性能特征

JVM 调优命令?

Sun JDK 监控和故障处理命令有 jps jstat jmap jhat jstack jinfo
1、jps,JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程。
2、jstat,JVM statistics Monitoring 是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。
3、jmap,JVM Memory Map 命令用于生成 heap dump 文件
4、jhat,JVM Heap Analysis Tool 命令是与 jmap 搭配使用,用来分析 jmap 生成的 dump,jhat
内置了一个微型的 HTTP/HTML 服务器,生成 dump 的分析结果后,可以在浏览器中查看
5、jstack,用于生成 java 虚拟机当前时刻的线程快照。
6、jinfo,JVM Configuration info 这个命令作用是实时查看和调整虚拟机运行参数。

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/107239550
今日推荐