精华内容
下载资源
问答
  • sun jdk 下如何生成heapdump文件   以Tomcat为例:   在tomcat启动脚本中增加 HeapDumpOnOutOfMemoryError 参数 此参数需要Java SE release 5.0 update 7 或以上支持 设置示例: set JAVA_OPTS=%JAVA_OPTS%...

    sun jdk 下如何生成heapdump文件

     

    以Tomcat为例:

     

    在tomcat启动脚本中增加 HeapDumpOnOutOfMemoryError 参数

    此参数需要Java SE release 5.0 update 7 或以上支持

    设置示例:

    set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError

     

    测试内存溢出时可以把-Xms和-Xmx等的值相应调低即可.

    文件默认产生在tomcat/bin目录下

     

    如增加HeapDumpOnCtrlBreak Option就可以通过ctrl+break或收到SIGQUIT生成heapdump文件

    此参数需要Java SE release 5.0 update 14 或以上支持

    设置示例:

    set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak

     

    参数介绍:
    HeapDumpOnOutOfMemoryError 参数:


    The -XX:+HeapDumpOnOutOfMemoryError command-line option was introduced in Java SE release
    5.0 update 7. This option tells the HotSpot VM to generate a heap dump when the first thread throws a
    java.lang.OutOfMemoryError because the Java heap or the permanent generation is full. There is
    no overhead in running with this option, and so it can be useful for production systems where
    OutOfMemoryError takes a long time to surface.
    The heap dump is in HPROF binary format, and so it can be anaylzed by any tool that can import this
    format, for example the Heap Analysis Tool (HAT).
    By default the heap dump is created in a file called java_pid<pid>.hprof in the working directory
    of the VM, where <pid> is the process ID. You can specify an alternative file name or directory with
    the -XX:HeapDumpPath= option. For example, -XX:HeapDumpPath=/disk2/dumps will cause the
    heap dump to be generated in the /disk2/dumps directory.

     

    HeapDumpOnCtrlBreak 参数:


    The -XX:+HeapDumpOnCtrlBreak command-line option was introduced in Java SE release 5.0 update 14. This option tells the HotSpot VM to generate a heap dump when a Ctrl-Break or SIGQUIT signal
    is received. This provides a way to trigger a heap dump on demand.
    The heap dump is in HPROF binary format, and so it can be anaylzed by any tool that can import this
    format, for example the Heap Analysis Tool (HAT). The heap dump contains only live objects.
    By default the heap dump is created in a file called java_pid<pid>.hprof.<yyyymmdd>.<hhmmss>
    in the working directory of the VM, where <pid> is the process ID, and <yyyymmdd>.<hhmmss> is the
    approximate time when the heap dump was generated.
    You can specify an alternative file name or directory with the -XX:HeapDumpPath= option. For
    example, -XX:HeapDumpPath=/disk2/dumps will cause the heap dump to be generated in the
    /disk2/dumps directory.
    If both the -XX:+HeapDumpOnCtrlBreak and -XX:+PrintClassHistogram options are enabled, the
    heap dump and the heap histogram are obtained from the same heap snapshot.

     

     

    详见JavaTM 2 Platform, Standard Edition 5.0 Troubleshooting and Diagnostic Guide
    http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf

    展开全文
  • tomcat6 jdk版本 java version "1.6.0_32" 二.用到的各参数介绍 1概述 .默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。 设置jvm内存的方法,对于单独的.class,...

    一.系统参数:

    windows xp

    tomcat6

    jdk版本 java version "1.6.0_32"

    二.用到的各参数介绍

    1概述

    .默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。
    设置jvm内存的方法,对于单独的.class,可以用下面的方法对Test运行时的jvm内存进行设置。
    java -Xms64m -Xmx256m Test

    2JVM内存分配设置

    A:JVM内存分配设置的参数有四个:


    -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;

    (注意:JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。)

    -Xms    Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;

    -Xmn    Java Heap Young区大小,不熟悉最好保留默认值;

    -Xss    每个线程的Stack大小,不熟悉最好保留默认值;

    B:辅助信息

    1. JVM提供了大量命令行参数,打印信息,供调试使用。主要有以下一些:
    • -XX:+PrintGC
      输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]

                   [Full GC 121376K->10414K(130112K), 0.0650971 secs]

    • -XX:+PrintGCDetails
      输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]

                   [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured:112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K),0.0436268 secs]

    • -XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用
      输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
    • -XX:PrintHeapAtGC:打印GC前后的详细堆栈信息
      输出形式:
      34.702: [GC {Heap before gc invocations=7:
      def new generation   total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)
      eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)
      from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)
      to   space 6144K,   0% used [0x21bd0000, 0x21bd0000, 0x221d0000)
      tenured generation   total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)
      the space 69632K,   3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)
      compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
         the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
          ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
          rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
      34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8:
      def new generation   total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)
      eden space 49152K,   0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)
      from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)
      to   space 6144K,   0% used [0x221d0000, 0x221d0000, 0x227d0000)
      tenured generation   total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)
      the space 69632K,   4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)
      compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
         the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
          ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
          rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
      }
      , 0.0757599 secs]
    • -Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析。
    C:常见配置
    1. 常见配置汇总
      1. 堆设置
        • -Xms:初始堆大小
        • -Xmx:最大堆大小
        • -XX:NewSize=n:设置年轻代大小
        • -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
        • -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
        • -XX:MaxPermSize=n:设置持久代大小
      2. 收集器设置
        • -XX:+UseSerialGC:设置串行收集器
        • -XX:+UseParallelGC:设置并行收集器
        • -XX:+UseParalledlOldGC:设置并行年老代收集器
        • -XX:+UseConcMarkSweepGC:设置并发收集器
      3. 垃圾回收统计信息
        • -XX:+PrintGC
        • -XX:+PrintGCDetails
        • -XX:+PrintGCTimeStamps
        • -Xloggc:filename
      4. 并行收集器设置
        • -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
        • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
        • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
      5. 并发收集器设置
        • -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
        • -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
    3如何设置JVM的内存分配:


    (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效):

    java -Xmx128m -Xms64m -Xmn32m -Xss16m Test

    (2)当在集成开发环境下(如eclipse)启动并使用JVM时:

    a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配):

    -vmargs
    -Xms40m
    -Xmx256m
    -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。

    此处设置的参数值可以通过以下配置在开发工具的状态栏显示:

    在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true

    修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:
    -debug
    options
    -vm
    javaw.exe
    重新启动eclipse,就可以看到下方状态条多了JVM信息。

    b. 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效)

    编辑当前使用的JRE,在缺省VM参数中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    c. 打开eclipse-运行-运行-Java应用程序(只对所设置的java类生效)

    选定需设置内存分配的类-自变量,在VM自变量中输入:-Xmx128m -Xms64m -Xmn32m -Xss16m

    注:如果在同一开发环境中同时进行了b和c设置,则b设置生效,c设置无效,如:

    开发环境的设置为:-Xmx256m,而类Test的设置为:-Xmx128m -Xms64m,则运行Test时生效的设置为:

    -Xmx256m -Xms64m

    (3)当在服务器环境下(如Tomcat)启动并使用JVM时(对当前服务器环境下所以Java程序生效):

    a. 设置环境变量:

    变量名:CATALINA_OPTS

    变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m

    b. 打开Tomcat根目录下的bin文件夹,编辑catalina.bat,在set JAVA_OPTS=%JAVA_OPTS%....这句之后加上:set JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx1024m


    c、若没有catalina.bat,只有tomcat.exe,tomcat6w.exe;则可以在启动tomcat6w.exe 后 右键配置--Java--java option 下面输入:

    -Xmx256m

    -Xms64m
    也可以找到注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat6\Parameters\JavaOptions
    原值为
    -Dcatalina.home="C:\ApacheGroup\Tomcat 6.0"
    -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 6.0\common\endorsed"
    -Xrs
    加入

    -Xms300m

    -Xmx350m 

    注意注册表中的各参数最后不允许有空格
    重起tomcat服务,设置生效

    操作截图:


    使用注册表方式修改:



    展开全文
  • 如果使Tomcat产生core和heap dump文件

    千次阅读 2017-02-07 17:33:01
    如果使得tomcat产生core dump文件   core dump文件生成开关其实是通过对生成的文件大小进行控制达到的,默认大小是0,也就是说默认是不生成core dump文件...如果使得tomcat产生heap dump文件   编辑tomcat安装目录/

    如果使得tomcat产生core dump文件  

           core dump文件生成开关其实是通过对生成的文件大小进行控制达到的,默认大小是0,也就是说默认是不生成core dump文件的,可以通过命令ulimit -c进行查看。将此参数修改成unlimited就可以生成core dump文件了,

    如果使得tomcat产生heap dump文件  

            编辑tomcat安装目录/bin/catalina.sh,添加以下设置:

            JAVA_OPTS=”$JAVA_OPTS -server -Xms64m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreak”

    展开全文
  • Tomcat内存泄漏定位...为了找到内存泄漏点,我们通过jmap工具生成Heap Dump jmap -dump:live,format = b,file = 94223.bin 94223 用Eclipse Memory Analyzer:转储文件,通过内存泄漏分析,得到这样一个分析报告
  • 导出tomcat的jvm内存信息和线程信息

    千次阅读 2018-11-05 10:23:37
    导出tomcat的JVM的内存信息和线程信息 1 tomcat内存溢出时,自动生成jvm的dump文件 ...-XX:HeapDumpPath=[输出目录路径] 可以认为制造tomcat内存溢出,代码如下: 启动后即可,宕机后文件将会在...

    导出tomcat的JVM的内存信息和线程信息

    1 tomcat内存溢出时,自动生成jvm的dump文件

    Linux系统中,在tomcat的bin中的catalina.sh中添加两个参数

    -XX:+HeapDumpOnOutOfMemoryError

    -XX:HeapDumpPath=[输出目录路径]

    可以认为制造tomcat内存溢出,代码如下:

    启动后即可,宕机后文件将会在HeapDumpPath的目录中生成,

    内存溢出日志:

     

    生成的文件:

    通过WinSCP导出文件,通过内存分析工具MemoryAnalyzer 加载文件进加载文件进行查看即可

    MemoryAnalyzer下载链接地址如下:

    http://www.eclipse.org/mat/downloads.php

    选择适合自己java环境的版本即可,注意事项:必须安装eclipse

    也可以使用jdk自带的工具单开生成的文件

    2 主动获取jvm的dump文件

    进入服务器,通过命令获得tomcat运行状态,获得tomcat进程号

    ps -ef|grep tomcat

    通过命令查看整个JVM的内存状态

    jmap -heap [pid]

     

    通过命令将内存信息导出到文件,文件地址为命令输出当前目录

    jmap -dump:format=b,file=文件名 [pid]

    3 获得运行状态时的线程信息

    使用命令常看进程号

    ps -ef|grep tomcat

    进入jdk的bin目录下,使用命令生成线程文件

    ./jstack [pid] > [文件名]

    通过ftp导出文件,编辑器打开文档搜索 DEADLOCKE(死锁状态)或者BLOCKED(线程闭塞状态) 根据情况分析问题

     

    展开全文
  • windows系统在tomcat的bin的catalina.bat文件上添加下面...set "JAVA_OPTS=%JAVA_OPTS% -Xmx256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/ceshi %JSSE_OPTS%" 当内存溢出后会在指定位置生成hprof文件
  • 每半小时Tomcat不响应

    2019-09-19 07:02:34
    背景 应用系统采用javaBean + servlet + c3p0实现。症状 每半小时后,Tomcat无响应。诊断 1、生成内存快照 jmap -dump:format=b,file=heap.dump 7996,占用内存并不大不到512M 2、生成线程...
  • 最近,线上生产系统突然频繁的 JVM 内存报警!但本系统近期内并没有上线改动!为了能查清内存报警的原因,使用 ...1. 生成 dump 文件用 jmap 生产 dump 文件jmap-dump:format=b,file=HeapDump.bin<pid>2. ...
  • Default location: D:\Program Files\apache-tomcat-7.0.73\tomcat1\hs_err_pid328.mdmp # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # ...
  • jmap dump 出JVM 内存信息命令

    千次阅读 2016-06-03 20:12:35
    jmap -dump:live,format=b,file=heap.bin pid heap.bin 是生成文件名 pid 是tomcat 或者 java 应用的pid 可以在top命令查看 默认生成路径 是tomcat/bin
  • Java内存溢出分析

    2015-01-13 17:08:04
    进入jar包目录-->用cmd命令:java -Xmx800m -jar ha453.jar -->运行后打开heapDump文件:java_pid4944.hprof 【下面是生成heapDump文件的方法】 方法一: 如果手动启动tomcat则 打开win7:tomcat/bin/...
  • 果断的添加上-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:homejvm参数。看看出现了什么问题。之后在运行时,发生内存溢出,我可以根据生成的hprof文件查看具体发生了什么。这里小编通过Springboot模拟一次...
  • JVM内存分析

    2020-01-14 14:21:02
    ###获取JVM的dump文件 #####1、JVM启动时增加两个参数: #出现 OOME 时生成堆 dump: ... -XX:HeapDumpPath=/opt/logs/jvm/ Tomcat配置自动生产dump文件参考Tomcat性能调优 #####2、发现程序异常前通过执行指令...
  • 内存溢出

    2011-12-20 13:42:00
    关于内存溢出,我们可以在启动tomcat时,加参数“-XX:+HeapDumpOnOutOfMemoryError”。...这样,但内存溢出时,会生成heap dump文件。 然后,可以通过如MemoryAnalyzer等分析工具,进行分析,定位是否有内存泄露。...
  • java打印gc日志及堆内存异常生成快照... 创建文件夹/data0/work/tomcat下Jenkins用户创建 gc_logs 文件夹/data0/work/tomcat下Jenkins用户创建 heapdump 文件夹参数:export BASE_DIR=$(dirname $0)/..export CUR_DA...
  • java内存溢出分析

    2016-01-12 18:03:25
    用jmap生产dump文件,win通过任务管理器查看tomcat的进程pid,linux用ps命令查看进程pid,...Java6:jmap -dump:format=b,file=HeapDump.bin &lt;pid&gt;) 生成dump文件,可以直接用 jmap -dump:format=b...
  • 查询最耗cpu的进程

    2018-07-06 10:02:00
    最新方案:1,查看博客的文件:服务器CPU...生成dump文件①,top出异常进程②,生成异常进程的dump文件jmap -dump:format=b,file=[文件名] [进程]jmap -dump:format=b,file=heap.dump 2576jmap -dump:format=b,file=...
  • tomcat设置了 -XX:+HeapDumpOnOutOfMemoryError后,有堆内存溢出进,就生成相关的hprof文件。当然也可以通过jcmd命令生成一个hprof文件,命令格式:jcmd &lt;PID&gt; GC.heap_dump &lt;filepath&...
  • 问题:每小时在跟目录下生成一个 hs_err_pid<pid>.log 已经采取的措施: 1、配置服务器Swap 2、配置tomcat jvm 内存 (bin/catalina.sh) 未果,求牛人指点。 文件内容如下: # # There is insufficient memory ...
  • 线上内存泄漏排查

    2019-06-10 13:02:37
    发现linux上服务 刚启动的时候是 占用700MB, 一直在跑商品同步,初步怀疑是商品同步的时候导致内存泄漏 开始排查 ps -aux|grep tomcat 使用查看内存 发现占用 2.5G ...生成快照 heap.hprof idea安装 j...
  • 内存泄漏解决思路

    2019-06-10 13:06:36
    发现linux上服务 刚启动的时候是 占用700MB, 一直在跑商品同步,初步怀疑是商品同步的时候导致内存泄漏 开始排查 ps -aux|grep tomcat 使用查看内存 发现占用 2.5G ...生成快照 heap.hprof idea安装 jprofiler wind...
  • OOM异常会导致JVM退出吗?

    千次阅读 2019-06-11 15:33:58
    最近发现bi项目,5月6号有OOM错误,并且有dump文件生成,奇怪的是tomcat没有挂掉。 即使发生了oom,程序也不一定会挂?jvm回收成功就可以。 一、问题来源 一次生产事故,由于一次性从数据库查询过多数据导致***线程...
  • 在阿里云服务器上安装jdk7+tomcat7环境,启动tomcat,不发布任何应用,jvm也会不停出错 每隔一个小时就生成一个hs_err_pid*.log 系统版本: Linux iZ23usxuuqdZ 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51...
  • Java Heap dump文件分析工具jhat简介 Common Lisp简介【废弃】 “一劳永逸”地解析 SHOW SLAVE STATUS 日志文件和位置 DOM中的动态NodeList与静态NodeList PL/SQL一天入门基础教程【废弃】 生产环境线上测试的惨淡...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

tomcat生成heapdump