JVM常用配置参数
Trace跟踪参数:
-verbose:gc 对gc的状况进行跟踪
-XX:+printGC 打开gc日志开关
-XX:+printGCDetails 打开gc详细信息
-XX:+printGCTimestamps 打开gc发生的时间戳
-Xloggc:log/gc.log 指定GC log的位置,以文件输出,帮助开发人员分析问题
-XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息
-XX:+TraceClassLoading 监控类的加载
-XX:+PrintClassHistongram 按下Crtl+Break后,打印类的信息,分别显示:序号,实例数量、总大小、类型
堆的分配参数:
-Xmx:指定最大堆 最多使用多大 例:-Xmx20m 这个堆最多使用20兆
-Xms: 指定最小堆 最小使用多少 例: -Xms5m
获取当前堆的最大分配空间:Runtime.getRuntime().maxMemory()
获取当前堆的空闲空间:Runtime.getRuntime().freeMemory()
获取当前堆的总空间(被分配的空间): Runtime.getRuntime().totalMemory()
-XX:NewRatio 新生代和老年代的比值 如果值为4,则说明新生代:老年代=1:4,新生代占1/5 -XX:NewRatio=1
-XX:+HeapDumpOnOutOfMemoryError OOM时导出堆到文件
-XX:+HeapDumpPath 导出OOM的路径
永久区分配参数:
-XX:PermSize 设置永久区的初始空间
-XX:MaxPermSize 设置永久区的最大空间
如果对空间没有用完,也抛出了OOM,有可能是永久区导致的
通常只有几百k
决定了函数调用的深度
每个线程都有独立的栈空间
局部变量、参数 分配在栈上