一、Trace 跟踪参数
在Eclipse中,如何设置jvm运行时参数:
选择菜单栏Run -> Run Configurations -> Java Application -> 选择自己的项目 -> 在右侧找到Arguments选项卡 -> 在VM arguments中填写参数
- -verbose:gc(打开GC的跟踪日志)
- -XX:+printGC(打开GC的log的开关,简要日志)
- -XX:+PrintGCDetails(打印GC的详细信息)
- -XX:+PrintGCTimeStamps(打印GC发生的时间戳)
- -Xloggc:log/ge.log(指定GC.log的位置,以文件形式输出)
- -XX:+PrintHeapAtGC(每一次GC后都打印出堆信息)
- -XX:+TraceClassLoading(监控类加载,可以在程序运行时检出哪些类被加载了)
- -XX:+PrintClassHistogram(加入此参数,在运行时不会有其他东西输出,但是在按下Ctrl+Break后可以打印出类的信息,类的直方图)
二、堆的参数
-
-Xmx(最大堆的空间)
-
-Xms(最小堆的空间)
-
-XX:+HeapDumpOnOutOfMemoryError(将OOM时的堆信息导出到文件)
如果系统出现OOM一般情况系统有可能会down掉,但是我们排查问题时需要场景重现是比较困难的,所以当我们输出了OOM的异常时,就可以直接查看,找出导致OOM的原因 -
-XX:+HeapDumpPath=XXXX(导出OOM堆信息文件的路径)
-
-XX:OnOutOfMemoryError(在系统出现OOM时,执行一个脚本,可以发送邮件,报警或者是重启程序)
-
-XX:PermSize(设置永久代的初始空间大小)
-
-XX:MaxParmSize(设置永久代的最大空间)
-
-Xmn (设置新生代的大小)
-
-XX:NewRatio(设置新生代和老年代的比值,如果设置为4则表示(eden+from(或者叫s0)+to(或者叫s1)): 老年代 =1:4),即年轻代占堆的五分之一
-
-XX:SurvivorRatio(设置两个Survivor(幸存区from和to或者叫s0或者s1区)和eden区的比),8表示两个Survivor:eden=2:8,即Survivor区占年轻代的五分之一
三、栈的大小设置
栈是每一个线程都有的,他是线程私有的一块内存区域.栈中主要是由帧组成,而帧中是每个方法的局部变量表,操作数表,和指向常量池的引用和返回地址等组成。一般只有几百K,但是它的大小决定了线程的多少和调用函数的深度,而且每个线程都有独立的栈空间。
- -Xss(设置栈空间的大小)