博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM原理及调优
阅读量:7185 次
发布时间:2019-06-29

本文共 1555 字,大约阅读时间需要 5 分钟。

纠正: 上图中第6点报错Java.lang.OutOfMemoryError:java heap space

JVM基础知识大集合

==============

1. JVM内存泄露的几种类型    

    持久代溢出(java.lang.OutOfMemoryError: PermGen space)

     堆溢出(java.lang.OutOfMemoryError: java heap space)

     栈溢出(java.lang.StackOverflowError)

2. JVM参数配置的

    tomcat里的JVM参数配置在tomcat/bin/catalina.sh文件里的cygwin=false上边。

    JAVA_OPTS="-Xms128m -Xmx128m -Xss1024K -XX:PermSize=128m

            -XX:MaxPermSize=128m -Djava.rmi.server.hostname=192.168.70.128

            -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1090

            -Dcom.sun.management.jmxremote.ssl=false

            -Dcom.sun.management.jmxremote.authenticate=false"

3. JVM性能监控命令

 【1】jmap命令---定位内存泄露

  常用参数:-heap   查看当前堆内存的使用情况

        -histo  快速定义内存泄露、

        -dump  把内存使用情况的情况输出到文件中

 用法: 1) jmap -head pid   查看当前堆内存的使用情况

       (pid为tomcat的pid,或者jdk的pid)

从图中可看出,年老代的内存已经使用完。此时报java.lang.OutOfMemoryError: Java heap space

 2)jmap -histo pid 快速定义内存泄露、

     

首先,查看前30条记录中是否有自己项目中调用的方法。 如果有,初步可断定是该方法中有内存泄露。

如果前30条记录中没有自己项目中调用的方法,则可用jmap -dump:live,format=b,file=andashu 2292 把当前的堆内存使用情况输入到文件中 , 然后用jhat或Mat去分析内存泄露的原因。

[注意: jmap -dump后悔自动触发一次full GC]  

  【2】jprofiler工具---定位内存泄露、CPU热点问题

   1)jprofiler的安装

    windows安装客户端,linux安装服务器端。通过客户端访问服务器端。

    连接成功后,如图所示:

  2)jprofile分析内存泄露的步骤 

    第一步:点击Instance count按内存使用情况排序。

    第二步:在使用内存最大的对象上右键选择Mark Current Values

    第三步:加压,查看图的变化

    第四步:点击右上角Run Gc ,此时相当于调用system.GC。 此时我们发现,所有内存都减少了,处了该对象的内存,由此可断定该对象有内存泄露发生。

    第五步:在该对象上右键选择Show Selection In Heap Walker,把该对象放到head内存中,可查看具体造成内存泄露的代码。

 3)jprofile分析CPU热点问题

   把jprofile工具切换到CPU视图,不断加压,我们发现现实如下

 

从图中红色区域,逐层下钻分析可得出具体时间是SQL语句的问题,还是方法的问题,还是其他问题。

本文转自屌丝逆袭博客51CTO博客,原文链接http://blog.51cto.com/5731674/1671961如需转载请自行联系原作者

_追随我心

你可能感兴趣的文章
如何在CentOS/RHEL Linux 6 & 7 上安装Telnet
查看>>
solr新版本环境搭建
查看>>
「ThinkPHP开发者周刊」第6期——好用的第三方类库
查看>>
error writing request body to server
查看>>
常用正则表达式大全
查看>>
ecshop 源码文件结构说明
查看>>
常用awk命令(转)
查看>>
traceroute, tracepath, mtr(网络工具)
查看>>
jaxb
查看>>
Roundabout不规则列表效果展示,类似旋转木马效果
查看>>
天龙八部服务器端---共享内存的设计
查看>>
透明的ico
查看>>
XSS攻击简单了解
查看>>
高性能的I/O设计中 著名的模式Reactor和Proactor模式
查看>>
XDOC合同填报解决方案
查看>>
git迁移
查看>>
Ubuntu 安装JDK6
查看>>
C++前置声明
查看>>
dbcp基本配置和重连配置
查看>>
用fgetc()函数读取磁盘文件并打印到屏幕
查看>>