Java垃圾回收机制与Dump文件的分析_第1页
Java垃圾回收机制与Dump文件的分析_第2页
Java垃圾回收机制与Dump文件的分析_第3页
Java垃圾回收机制与Dump文件的分析_第4页
Java垃圾回收机制与Dump文件的分析_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java垃圾回收机制

与dump文件的分析Agenda一.内存的分配和垃圾回收二.GC日志的分析与Javadump文件的分析

三.总结一.内存的分配与垃圾回收1.为什么要对内存进行管理

MemoryisperformaceStackandHeap

Stack:栈,FIFO。

优点:存取速度比Heap要快,栈数据可以共享。

缺点:数据大小与生存期必须是确定的,缺乏灵活性。

Heap:堆。运行时数据区

优点:动态地分配内存大小,生存期也不必事先告诉编译器,

缺点:比Stack慢。一.内存的分配与垃圾回收2.JVM对内存的管理Java不需要程序员自己去管理内存的分配

Useruser=newUser();GC,JVM内存管理中最重要的内容JVM自动GC,因此Java中不存在内存泄露?一.内存的分配与垃圾回收3.GC:GarbageCollection1)什么样的内容可以回收:标记死亡的对象2)如何回收:垃圾收集器的工作方式

一.内存的分配与垃圾回收3.GC:GarbageCollection1)标记死亡的对象

一.内存的分配与垃圾回收3.GC:GarbageCollection1)标记死亡的对象

一.内存的分配与垃圾回收3.GC:GarbageCollection1)标记死亡的对象

一.内存的分配与垃圾回收3.GC:GarbageCollection2)如何回收:垃圾收集器的工作方式ReferenceCountingCollectorMark-SweepCollectorMark-compactCollectorCopyingCollectorGenerationalCollector

一.内存的分配与垃圾回收ReferenceCountingCollector优点:简单缺点:速度非常慢。从未有JVM真正实现过。

一.内存的分配与垃圾回收Mark-SweepCollector早期的JVM使用优点:简单缺点:产生很多内存碎片,分配新Object越来越慢

一.内存的分配与垃圾回收Mark-CompactCollectorJVM扫描Heap两遍优点:解决内存碎片的问题缺点:做垃圾回收时速度比较慢

一.内存的分配与垃圾回收CopyingCollector保存一半内存,只在一半内存中分配对象优点:只需扫描一次Heap缺点:消耗的内存比较大

一.内存的分配与垃圾回收GenerationalCollector按照一个Object经历的垃圾回收次数计算其年龄80%的Object在很早的时期就已经死掉将Heap分段,区分年轻的和年老的区段在不同的区段使用不同的垃圾回收策略

一.内存的分配与垃圾回收GenerationalCollector

一.内存的分配与垃圾回收GenerationalCollectorMinorGC:只做YoungGeneration局部的GCMajorGC:做整个Heap的GC

但是……假设经常性出现了内存溢出我们应该怎么办?????

二、GC日志的分析与Javadump文件的分析1.保持镇定,重启应用,观察JVM的运行状态2.分析可能出现内存溢出的原因

1.监控JVM的运行状态:JConsoleafterSunJDK1.5+在JDK中增加参数,翻开JMX:-Dcom.sun.management.jmxremote.port=1099-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false我们也可以自己写代码,使Jconsole也能监控我们的应用

二.GC日志的分析

与Javadump文件的分析1

.监控JVM的运行状态:JConsole

二.GC日志的分析

与Javadump文件的分析Jconsole实际例子Jconsole控制台MBean

二.GC日志的分析

与Javadump文件的分析2.分析内存溢出可能的原因1).JVM本身的GC和内存分配策略不合理

2).应用本身存在内存泄露

二.GC日志的分析

与Javadump文件的分析1).JVM本身的GC和内存分配策略不合理使用JVM参数翻开GC的详细日志: SunJDK:-verbose:gc-Xloggc:/home/yaonengjun/gc.logIBMJDK:-Xverbosegc:file=filename分析产生的GC日志:

例子gc.log

二.GC日志的分析

与Javadump文件的分析1).JVM本身的GC和内存分配策略不合理

图形化的GC日志分析器

GCViewer:

PMAT例子

二.GC日志的分析

与Javadump文件的分析

2).应用本身存在内存泄露

使用JVM参数,在内存泄露时生成dump文件-XX:+HeapDumpOnOutOfMemoryErrordump文件:

内存数据在硬盘上的映像

二.GC日志的分析

与Javadump文件的分析

2).应用本身存在内存泄露:dump文件分析◆jmap/jhat:●JDK自带的命令行工具Jmap:生成应用的dump文件Jhat:对dump文件进行分析

●相当费内存,使用内存大约在要分析的dump文件的1.5–2倍jhat使用例如

二.GC日志的分析

与Javadump文件的分析

2).应用本身存在内存泄露:dump文件分析◆SAP:MemeoryAnalyzer●免费●图形化的分析工具●消耗内存小●会创立dump文件的索引,需要硬盘空间较大〔dump文件的2-3倍〕MAT使用例如

二.GC日志的分析

与Javadump文件的分析

●在大多数情况下,内存溢出都是和应用相关的。因此,想要知道内存溢出的根源,最好是对应用的源代码比较熟悉。友情提示:●分析内存溢出时,通常会非常消耗系统资源,需要事先找好配置比较高的机器

三.总结 1、Java的内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论