【面试题总结】JVM02:JVM参数调优、类加载机制

四、JVM参数调优

1、调优工具

1jvisualvmjdk提供的性能分析工具,可以监控java进程,对dump文件分析;查看应用程序的详细信息,针对不同插件,实现监控GC过程、内存、进程、线程等,也可以实现对Tomcat的监控

2JpsProcess Status:查看Java进程

3Jstat:使用命令行的方式监控Java应用程序的资源和性能,加参数gc/compile/class/gccapacity/gcnew/gcoldcapacity/printcompilation查看各种信息

4jmap:内存映像工具,可以生成dump堆转储快照,也可加参数“-XX:+HeapDumpOnOutOfMemoryError”在OOM时自动生成dump文件

5jhat:将dump出来的hprof文件转成html的形式加参数在OOM时自动生成文件到指定路径

6jstack查看线程的调用堆栈

7jinfo:查看正在运行的 java 应用程序的扩展参数

 

2、利用工具调优

1)查看堆信息

- 查看不同代空间分配,从而看不同代划分是否合理

- 查看对象引用情况,以避免内存泄漏

- 查看垃圾回收过程,查看垃圾回收算法设置是否合理

- 查看堆内存和对象信息

2)线程监控

- 监控线程数量、状态

- 使用dump查看线程内部运行情况

- 避免产生死锁

3)热点分析

- CPU 热点:查看哪些方法占用CPU

- 内存热点:查看占用空间大的对象

4)快照查看

- 对比两次快照的对象情况,避免浮动垃圾或遗漏对象等现象

5)检查内存泄漏

- 避免系统资源(堆、栈、进程等)错误使用

 

3、调优参数

1)分类

-开头的标准参数:数据模型选择、类搜索路径

-X开头的非标准参数:设置堆栈大小

-XX开头的不安全参数:堆和垃圾回收器设置

2)堆设置

初始堆(-Xms)、最大堆(-Xmx)、永久代大小(-XX:MaxPermSize

年轻代(-XX:NewSize=n)、新老代比值(-XX:NewRatio=n

3)回收器设置

设置串行(-XX:+UseSerialGC)、并行(-XX:+UseParallelGC)、并发收集器(-XX:+ UseConcMarkSweepGC

4)并行收集器设置

使用CPU数(-XX:ParallelGCThreads=n)、并行搜集暂停时间、垃圾回收时间占比(-XX:GCTimeRatio=n

5)并发收集器

设置增量模式(-XX:+CMSIncrementalMode)、设置并行收集使用的CPU

 

五、类加载机制

1、类文件结构

魔数:确定文件是否符合class文件规范

文件版本、常量池、文件类型(类/接口)

字段、属性、方法集合

 

2、类加载机制

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载7个阶段,验证、准备、解析3个部分统称为连接

加载-连接-初始化

 

 

3、类加载各阶段作用

加载:获取二进制字节流、转换到内存

验证:验证文件格式、元数据、字节码、符号引用

准备:为类变量分配内存并设置初始值

解析:常量池内的符号引用替换为直接引用

初始化:执行类构造器

 

4、常用类加载器

1)启动类加载器(Bootstrap ClassLoaderNO1)是虚拟机的一部分,将lib目录的类库加载到虚拟机内存;如果编写自定义加载器,将启动类置为空;

2)扩展类加载器(Extension ClassLoaderNO2):加载\lib\ext目录或系统变量指定的类库,开发者可以直接使用;

3)应用程序类加载器 (Application ClassLoaderNO3):加载用户路径(ClassPath)所指定的类库,是默认的类加载器;

4)(自定义)类加载器均继承ClassLoader类,调用(重写)loadClass()完成类加载,findClass()尝试从父类中记载。

 

 

5、类与类加载器的关系

由类加载器和类本身才能确定在JVM中的唯一性

比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有意义

例如:如果被不同的累加器加载,即使是同一个class文件,两个类也不相等

 

6、双亲委派模型

1)程序加载

三种类加载器相互配合进行加载,也可加入自定义类加载器

 

2)双亲委派模型

尝试将请求委派给父类加载器

所有的加载请求都传送到顶层的启动类加载器中

当父类加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。

posted @ 2022-01-31 19:31  哥们要飞  阅读(137)  评论(0编辑  收藏  举报