JVM规范--高手总结

JVM规范--高手总结

ID:37711530

大小:1.35 MB

页数:38页

时间:2019-05-29

JVM规范--高手总结_第1页
JVM规范--高手总结_第2页
JVM规范--高手总结_第3页
JVM规范--高手总结_第4页
JVM规范--高手总结_第5页
资源描述:

《JVM规范--高手总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JVM详解本文详细讲解了JVM(JavaVirtualMachine)的方方面面,首先由java的特性来描绘JVM的大致应用,再细细阐述了JVM的原理及内存管理机制和调优.最后讲述了与JVM密切相关的JavaGC机制.本文内容大多来自网络,但内容十分丰富,是学习JVM的好资料.后面会再针对JVM的两大职责classloader和executionengine进行讲解若有疑问目录Java相关11.1Java定义11.2Java的开发流程11.3Java运行的原理21.4半编译半解释31.5平台

2、无关性4JVM内存模型42.1JVM规范52.2SunJVM82.3SUNJVM内存管理(优化)102.4SUNJVM调优132.5.JVM简单理解162.5.1 Java栈162.5.2 堆162.5.3 堆栈分离的好处202.5.4堆(heap)和栈(stack)20JAVA垃圾收集器213.1 垃圾收集简史213.2 常见的垃圾收集策略213.2.1 Reference Counting(引用计数)223.2.2 跟踪收集器223.3 JVM的垃圾收集策略273.3.1 Serial Collector283.3.2 Para

3、llel Collector293.3.3 Concurrent Collector30Java虚拟机(JVM)参数配置说明3038

4、PageJava相关1.1Java定义1.2Java的开发流程38

5、Page1.3Java运行的原理38

6、Page1.4半编译半解释38

7、Page1.5平台无关性JVM内存模型38

8、Page2.1JVM规范JVMspecification对JVM内存的描述首先我们来了解JVMspecification中的JVM整体架构。如下图:     主要包括两个子系统和两个组件:Classloader(类装载器)

9、子系统,Executionengine(执行引擎)子系统;Runtimedataarea(运行时数据区域)组件,Nativeinterface(本地接口)组件。    Classloader子系统的作用:根据给定的全限定名类名(如java.lang.Object)来装载class文件的内容到Runtimedataarea中的methodarea(方法区域)。Javsa程序员可以extendsjava.lang.ClassLoader类来写自己的Classloader。     Executionengine子系统的作用:执行clas

10、ses中的指令。任何JVMspecification实现(JDK)的核心是Executionengine,换句话说:Sun的JDK和IBM的JDK好坏主要取决于他们各自实现的Execution engine的好坏。每个运行中的线程都有一个Executionengine的实例。    Nativeinterface组件:与nativelibraries交互,是其它编程语言交互的接口。     Runtimedataarea组件:这个组件就是JVM中的内存。下面对这个部分进行详细介绍。38

11、PageRuntimedataarea的整体架

12、构图Runtimedataarea主要包括五个部分:Heap(堆),MethodArea(方法区域),JavaStack(java的栈),ProgramCounter(程序计数器),Nativemethodstack(本地方法栈)。Heap和MethodArea是被所有线程的共享使用的;而Javastack,Programcounter和Nativemethod38

13、Pagestack是以线程为粒度的,每个线程独自拥有。HeapJava程序在运行时创建的所有类实或数组都放在同一个堆中。而一个Java虚拟实例中只存在一个堆空间,因此所

14、有线程都将共享这个堆。每一个java程序独占一个JVM实例,因而每个java程序都有它自己的堆空间,它们不会彼此干扰。但是同一java程序的多个线程都共享着同一个堆空间,就得考虑多线程访问对象(堆数据)的同步问题。(这里可能出现的异常java.lang.OutOfMemoryError:Javaheapspace)Methodarea在Java虚拟机中,被装载的class的信息存储在Methodarea的内存中。当虚拟机装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class文件内容并把它传输到虚拟机中。紧接着

15、虚拟机提取其中的类型信息,并将这些信息存储到方法区。该类型中的类(静态)变量同样也存储在方法区中。与Heap一样,methodarea是多线程共享的,因此要考虑多线程访问的同步问题。比如,假设同时两个线程都企图访问一个名为Lava的类

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。