jvm虚拟机总结
1.jvm内存
1.0 jdk8与jdk7对比
1.1 jdk8 jvm内存
1.2 jdk8 元空间
存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
2 jdk7 内存:
2.1 jdk7 堆和方法区
2.2 方法区存储
从jdk7中开始永久代经过对方法区的分裂后已经几乎只存储类和类加载器的元数据信息了,到了jdk8,元空间中也是存储这些信息,而符号引用、字符串常量等存储位置与jdk7一致,还是“分裂”的方法区(即在堆中)
符号引用包括:1.类的全限定名,2.字段名和属性,3.方法名和属性。
- 摘抄:
jvm内存变化(jdk7->jdk8)图解:cloud.tencent.com/developer/a…
3 jvm 内存排查
3.1 jmap生成java堆内存二进制文件用vistualVm 载入分析
jmap -dump:live,file=dump_001.bin PID
3.2 启动参数增加下面这个,可以开启NMT,会增加内存消耗
-XX:NativeMemoryTracking=detail
- 设置内存基线
jcmd pid VM.native_memory baseline - 查看内存变化
jcmd pid VM.native_memory detail.diff scale=MB > a_diff.txt
记一次java应用内存不断增长问题解决过程:blog.csdn.net/weixin_3983…
jdk8 jvm参数一览:www.cnblogs.com/halberts/p/…