JVM参数简介
不稳定参数语法规则
布尔类型参数值
数字类型参数值:
字符串类型参数值
-XX:= 给选项设置一个字符串类型值,通常用于指定一个文件、路径或一系列命令列表。
FullGC出现前后打印日志
JVM参数实现在Full GC前后自动生成Dump。共有三个VM参数需要设置:
设置这些参数的方法,这里总结了四种,大家可以根据情况选择使用。
方法1
启动jvm时,带上这些参数(这个方法适合开发测试环境)
方法2
使用JConsole等工具调用JMX服务的com.sum.management.HotSpotDiagnostic.setVMOption方法来实现。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
-
第一个参数为HeapDumpBeforeFullGC, 第二个参数为true表示在Full GC前进行dump.
-
第一个参数为HeapDumpAfterFullGC, 第二个参数为true表示在Full GC前进行dump.
方法3
使用 **jinfo **命令进行设置。(生产环境常用的方法)
调用jinfo命令设置VM参数
方法4
Java堆溢出
怎么解决
解决办法见思路
虚拟机栈和本地方法栈溢出
内存溢出:就是栈所占用内存和数量太多了,同时也侧面看出来创建的线程数量太多了,导致OOM。
解决办法
单线程来说:避免栈溢出
多线程造成的OOM
方法区和运行时常量池溢出
方法区存放的是类信息和运行时常量池
如果创建大量的类
如果创建大量的常量且放入常量池
直接内存溢出
在运行的时候设置JVM参数,使其Dump出内存异常信息
通过内存映像分析工具(Eclipse Memory Analyzer)对Dump出来的内存转储快照进行分析
内存泄漏(Memory Leak)
内存溢出(Memory Overflow)
确定是哪种情况之后