JVM内存问题分析

1.GC日志分析

在JVM启动时加上一些参数,当JVM出问题时能记下一些当时的情况。GC的日志输出参数如下:

-verbose:gc      可以辅助输出一些详细的GC信息

-XX:+PrintGCDetails     输出GC的详细信息

-XX:+PrintGCApplicationStoppedTime      输出GC造成应用程序暂停的时间

-XX:+PrintGCDateStamps    GC发生的时间信息

-XX:+PrintHeapAtGC     在GC前后输出堆中各个区域的大小

-Xloggc:[file]     将GC信息输出到单独的文件中


2. 对快照文件分析

可以通过 jmap  -dump:format=b,file=[filename] [pid]  来记录下堆的内存快照,然后利用第三方工具,如mat来分析整个Heap的对象关联情况。

内存耗尽可能导致JVM直接垮掉,可以通过参数:-XX:+HeapDumpOnOutOfMemoryError来配置当内存耗尽时记录下内存快照,可以通过-XX:HeapDumpPath 来指定文件的路径。

3. JVM crash日志分析

  JVM有时会因为自身的bug而直接垮掉,可以通过 -XX:ErrorFile=[filepath] 来指定jvm退出时产生日志文件的路径

-Xmx5000m     堆的最大size
-Xms5000m     堆的初始大小
-Xmn2000m      年轻代大小

-XX:PermSize=256m    永久区的大小

持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

-Xss128k  每个线程的堆栈大小


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值