14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段
Posted to.to
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段相关的知识,希望对你有一定的参考价值。
14.VisualVM使用详解
15.VisualVM堆查看器使用的内存不足
16.性能调优概述
17.性能调优–案例1
18.性能调优—案例三
19.class文件–文件结构–魔数
20.文件结构–常量池
21.文件结构访问标志(2个字节)
22.类加载机制概述
23.类加载过程
14.VisualVM使用详解
15.VisualVM堆查看器使用的内存不足
在使用visualvm分析大的dump文件时,常会遇到堆查看器使用的内存不足。
解决办法:
修改:JAVA_HOME/lib/visualvm/etc/visualvm.conf文件中visualvm_default_options="-J-client -J-Xms24 -J-Xmx256m",把256改为1024,然后重启jvisualVM即可
visualvm_default_options="-J-client -J-Xms24m -J-Xmx1024m -J-Dsun.jvmstat.perdata.syncWaitMs=10000 -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.d3d=false -J-Dnetbeans.keyring.no.master=true -J-Dplugin.manager.install.global=false -J--add-exports=java.desktop/sun.awt=ALL-UNNAMED -J--add-exports=jdk.jvmstat/sun.jvmstat.monitor.event=ALL-UNNAMED -J--add-exports=jdk.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED -J--add-exports=java.desktop/sun.swing=ALL-UNNAMED -J--add-exports=jdk.attach/sun.tools.attach=ALL-UNNAMED -J--add-modules=java.activation -J-XX:+IgnoreUnrecognizedVMOptions"
16.性能调优概述
17.性能调优–案例1
经常发现Full GC,并且每次发生Full GC的时间相当长
为什么会发生这么长的Full GC呢?
思路:
对象优先放到Eden
大对象和长时间存活的会到老年到
当老年代不够用的时候会触发Full GC
当对内存很大的时候,老年代很大,所以需要长时间Full GC
经验:使用单集的tomcat集群。对内存减少。
18.性能调优—案例三
智能家居项目:
问题:jvm崩溃
原因:Connect Reset问题。
原因:大量任务来了之后,处理不好。
解决办法:
总结:在处理不对等数据的时候,加上一个消息队列。
19.class文件–文件结构–魔数
比如上面的34表示52,即下面的JDK1.8
20.文件结构–常量池
tag : 常量池类型,18种
21.文件结构访问标志(2个字节)
javap的用途百度查一下
22.类加载机制概述
懒加载机制。(即:用的时候才加载。第一次用的时候要等待一下才可以加载)
Java中的加载其实就是懒加载策略。
Hotspot就是懒加载方式。
23.类加载过程
Java类的声明周期
连接:当类在加载过程
案例(通过子类引用父类的静态字段):
这是可以看到只会加载父类。子类并没有被初始化。
案例2(通过数组类引用类不会被加载)
案例3(调用类的常量):
结果只有20
以上是关于14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段的主要内容,如果未能解决你的问题,请参考以下文章