JVM 调优概述
性能定义
- 吞吐量 - 指不考虑 GC 引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标。
- 延迟 - 其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集所引起的停顿,避免应用运行时发生抖动。
- 内存占用 - 垃圾收集器流畅运行所需要的内存数量。
调优原则
2024年10月23日
JVM 调优概述
性能定义
调优原则
2024年10月23日
Java GC发展至今,已经推出了好几代收集器,包括Serial、ParNew、Parallel、CMS、G1以及Java11中最新的ZGC。每一代GC都对前一代存在的问题做出了很大的改善。
今天介绍一个古董收集器-Serial串行GC。
虽然此收集器的使用场景已经不多,但本文通过这个收集器,说明了如何分配每一块堆内存的大小,并根据GC日志,详细说明了Serial GC在新生代和老年代的GC过程。
Serial GC的名字能很好地概括他的特点:串行。它与应用线程的执行是串行的,也就是说,执行应用线程的时候,不会执行GC,执行GC的时候,不能执行应用线程。
2024年10月23日
上期讲到此处:(doubixiaohanhan.sct中的内容后面会解释)
doubixiaohanhan.sct中的内容:
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00010000 { ; load region size_region
ER_IROM1 0x08000000 0x00010000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00005000 { ; RW data
.ANY (+RW +ZI)
}
}
2024年10月23日
逐步分析
虚拟机遇到一条new指令(new关键字、对象的克隆、对象的序列化等)时,会先去检查这个指令的参数在常量池中定位到一个类的符号引用,并且这个符号引用代表的类是否应被加载过,如果没有那么就去加载该类
类加载完毕后会给对象分配内存空间。对象的所需的内存大小在类加载完毕后就便可完全确认,为对象分配内存大小的空间等同于把一块确定大小的内存从java堆中划分出来。
2024年10月23日
使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影响,同时进行,这样,充分利用了cpu资源。
2024年10月23日
查看JAVA进程PID。
jps 命令用来查看所有 Java 进程,每一行就是一个 Java 进程信息。
jps 仅查找当前用户的 Java 进程,而不是当前系统中的所有进程,要显示其他用户的还只能用 ps 命令。
jps 常用参数