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.类加载机制概(代码片段的主要内容,如果未能解决你的问题,请参考以下文章

1. Proxy使用详解

OKHTTP使用详解

Epoll的使用详解

Mac自带的Apache使用详解

Android Gson 使用详解

Spring @Scheduled 使用详解