JVM内存管理IT68文库.pptVIP

  • 3
  • 0
  • 约6.23千字
  • 约 32页
  • 2017-05-28 发布于上海
  • 举报
JVM内存管理IT68文库ppt课件

相对而言MAT功能比jhat强大很多,分析的速度也快一些,因此,如果要分析jvm堆dumap文件,首选推荐的是MAT。 GC趋势对于可图形界面连到需查看GC状况的机器的情况而言,VisualVM是常用的选择;对于不能采用图形界面方式的,输出GC日志 及采用jstat命令直接分析是常用的选择。 在查找内存是程序中的什么对象占用时,需要分析内存的具体消耗状况,对于有图形界面可用的情况,VisualVM是常用的选择;对于不能采用图形界面方式的,可通过jmap dump生成文件后,再通过MAT进行分析是常用的选择。 其他: /s/blog_605f5b4f0100hlse.html 四、内存分析工具——工具使用建议 QA thanks? Email: mengxl@ Popo : frankie_meng@ Msn : mengxiangl@ 默认使用余数式hash算法: server = serverlist[hash(key) % serverlist的个数] 这样明显有一个缺点:当服务器的个数变化时,所有的hash都将无效,全部得重来一次 JVM内存管理 mengxl 2011-11-2 内存空间 内存分配 内存回收 内存分析工具 主要内容 两个子系统:Class loader子系统和Execution engine(执行引擎)子系统 两个组件:Runtime data area(运行时数据区域)组件和Native interface(本地接口)组件 一、内存结构 Class loader子系统 根据给定的全限定名类名(如java.lang.Object)来装载class 文件的内容到Runtime data area中的method area(方法区域) Execution engine子系统 执行classes中的指令。任何JVM specification实现(JDK)的核心都是Execution engine Native interface组件 与native libraries交互,是与其它编程语言交互的接口。当调用native方法的时候,就进入了一个全新的并且不再受虚拟机限制的世界 一、内存结构 Runtime Data Area组件——JVM的内存 Heap(堆):一个Java虚拟实例中只存在一个堆空间,用于存储对象实例及数组值,可以认为Java中所有通过new创建的对象的内存都在此分配,其大小可以通过-Xmx和-Xms来控制。 一、内存结构 堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,Survivor由S0和S1组成。新建的对象都是用新生代分配内存;旧生代用于存放新生代中经过多次垃圾回收仍然存活的对象 Runtime Data Area组件——JVM的内存 Method Area(方法区域) :被装载的class的信息存储在Method area的内存中。当虚拟机装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class文件内容并把它传输到虚拟机中。在Sun JDK中这块区域对应 Permanent Space,又称永久代。 可能抛出异常: java.lang.OutOfMemoryError: PermGen space 一、内存结构 Runtime Data Area组件——JVM的内存 Java Stack(java的栈):虚拟机只会直接对Java stack执行两种操作:以帧为单位的压栈或出栈,Java 栈为线程私有,当方法运行完毕,对应的栈帧所占用内存自动释放。可以通过-Xss来指定大小。 可能抛出异常: StackOverflowError 一、内存结构 Runtime Data Area组件——JVM的内存 Program Counter(程序计数器) :每一个线程都有它自己的PC寄存器,也是该线程启动时创建的。PC寄存器的内容总是指向下一条将被执行指令的地址。 Native method stack(本地方法栈):保存native方法进入区域的地址,用于支持native方法的执行,存储了每个native方法调用的状态。当一个线程调用本地方法时,它就不再受到虚拟机关于结构和安全限制方面的约束,它既可以访问虚拟机的运行期数据区,也可以使用本地处理 器以及任何类型的栈。 一、内存结构 堆(Heap)和非堆(Non-heap)内存 堆内存分配 非堆内存分配 JVM内存限制(最大值) 二、内存分配 堆(Heap)和非堆(Non-heap)内存 堆:就是Java代码可及的内存,是留给开发人员使用的。 非堆:就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构

文档评论(0)

1亿VIP精品文档

相关文档