Java堆栈参数配置(入门)

155 阅读1分钟

引言

heap用来存放应用系统创建的对象和数组,地址是逻辑连续

  • heap是在运行期动态分配内存大小,自动进行垃圾回收

  • 垃圾回收主要就是回收heap内存

堆参数配置以及实战

虚拟机打印GC日志

  • Xlog:gc (PrintGC PrintGCDetails)
  • Xlog:gc+heap=trace(PrintHeapAtGC)

GC日志格式

GC与垃圾回收器息息相关,本文以G1为准

  • GC发生的时间
  • 日志级别信息,日志类型标记
  • GC识别号(第几次GC)
  • GC类型和说明GC的原因
  • GC前容量->GC后容量(该区域总容量)
  • GC持续时间

heap的参数

  • -Xms:初始堆大小,默认物理内存的1/64
  • -Xmx:最大堆大小,默认物理内存的1/4
  • -Xmn:新生代大小,默认整个堆的3/8
  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:+HeapDumpPath
  • -XX:NewRatio:老年代与新生代的壁纸
  • -XX:SurvivorRatio:Eden区和Survivor区的比例关系

笔者的思考:设置新生代大小的意义?

新生代大小设置得太小就会频繁发生GC,新生代大小设置得太大就只会发生Full GC

Stack的参数

  • -Xss:通常只有几百K,决定了函数调用的深度

元空间的参数

  • -XX:MetaspaceSize:初始空间大小