结合前两章的内容总计下我们JVM使用过程中,一些常见的参数配置,和可能会出现的异常分析。
JVM
常见JVM参数配置
GC:
-verbose:gc
表示输出虚拟机中GC的详细情况
-XX:PrintGC
每次触发GC的时候打印相关日志
-XX:+PrintGCDetails
每次触发GC的时候更详细的相关日志
堆:
-Xms20M
堆初始值,也可以称之为最小可用值
-Xmx20M
堆最大可用值
-Xmn10M
新生代最大可用值
-XX:SurvivorRatio=8
设置Eden和Suivior的比例
目的可以反推出占新生代的比值
-XX:NewRatio=4
新生代(eden+2*S)和老年代(不包含永久区)的比值
4代表 新生代:老年代=1:4,老年代是新生代的4倍,新生代占5分之一的内存
-XX:HeapDumpPath=${目录}
堆快照生成地址
会生成*.hprof文件
-XX:+HeapDumpOnOutOf-MemoryError
可以让虚拟机在出现内存溢出异常的时候Dump出当前的内存堆转储快照,以便进行时候分析
虚拟机栈和本地方法栈
-Xoss 设置本地方法栈大小
基本无任何效果
-Xss
设定栈容量
方法与和运行时常量池
-XX:MaxPermSize
指对非堆区分配内存的最大上限。(非堆区配置)
/**限制永久代的大小,即可简介限制其中常量池的容量。(前提是,JDK6之前,常量池在永久代中)*/
-XX:PermSize
指非堆区初始化内存分配大小。(非堆区配置)
云空间
-XX:MaxMetaspaceSize
设置元空间最大值,默认是-1,即不限制,或者说只受限于本地内存大小。
-XX:MatespaceSize
指定元空间的初始空间大小,以字节为单位
-XX:MinMetaspaceFreeRatio
在垃圾手机之后控制最小的原空间剩余容量的百分比,可减少因为元空间不足导致垃圾收集的频率
-XX:Max-MatespaceFreeRatio
用于控制最大的元空间收于容量的百分比
本机直接内存
-XX:MaxDirectMemorySize
直接内存的容量大小
不指定默认于Java堆最大值(-Xmx一致)
JVM中MMO异常分析
常见的两种异常 内存泄漏(Memory Leak)和内存溢出(Memory Overflow)
本文主要是根据书中第二章中,根据不同的内存区域,做的一些针对性配置参数的介绍,以及常见的两种异常介绍。