Java虚拟机-JVM特性总结分享
- 作者:新网
- 来源:新网
- 浏览:100
- 2018-05-02 17:59:48
大家好!最近看这本书,颇有心得,自己也算深入的了解到了不少知识,从这本书里提取了自己认为比较重要的知识点分享给大家,还有自己的一些图例总结。
大家好!最近看这本书,颇有心得,自己也算深入的了解到了不少知识,从这本书里提取了自己认为比较重要的知识点分享给大家,还有自己的一些图例总结。

<
div> 侧重于本书的以下几章内容:第2章-
java内存区域与内存溢出异常、第3章-垃圾收集器与垃圾回收策略、第6章-类文件结构、第7章-
虚拟机类加载机制、第8章-虚拟机字节码执行引擎。
这几个主要章节是有一定的内在联系。虚拟机中内存占用最大的就是堆内存,而对象的实例就存在堆中,所以这部分内存的使用效率最高。java语言是面向对象的,而对象是怎样来占用堆中这部分内存的呢?下面内容或者下面几期我会为大家揭开迷雾!
当然,java虚拟机中不仅仅只有堆占用内存还有:java虚拟机栈、程序计数器、本地方法栈、方法区这5类瓜分虚拟机内存。如上图所示,由java虚拟机管理的这五部分数据区域,可分为两大类:一类是线程共享的,一类是线程私有的。而线程私有的数据区,每一部分的内存和线程的生命周期相同,每个线程之间互不影响,独立存储。
线程共享的区域可分为:java堆(占用的内存最大)、方法区
java堆:在虚拟机启动时创建,几乎所有对象的实例都在堆上分配内存。是垃圾收集器管理的主要区域
方法区:主要存储运行时常量池、常量、静态变量、已被虚拟机加载的类信息、即时编译器编译后的代码等数据
线程私有的区域可分为:程序计数器、java虚拟机栈、本地方法栈
程序计数器: 存储当前线程执行的字节码的行号指示器
java虚拟机栈: 是描述java方法执行的内存模型,每个方法在执行时都会申请一段内存存放方法执行时的数据,称为栈帧;其包含局部变量、操作数栈、动态链接、方法出口等数据。JVM是基于栈的,所以每个方法从开始执行到结束,对应这一个栈帧在虚拟机中入栈到出栈的过程。