JVM学习框架及内存结构初略理解
来源:互联网 发布:nginx中文 编辑:程序博客网 时间:2024/06/17 23:32
JVM作用
JAVA由于有虚拟机的特性,很多东西是编译器自己做的,不相C语言 内存的分匹配和释放需要人为控制, JVM有垃圾回收器自动的进行处理,所以很多情况下,这种处理并不能让我们满意。为了解决这个问题还有线程处理的问题,我们需要学习JVM来处理相关异常(内存溢出)以及自定义JDK。
JVM学习的知识框架
1、了解JAVA虚拟机的发展 特别是Hotsop
2、了解其自动内存管理结构(垃圾回收器)
3、虚拟机如何执行程序
4、Java程序如何从源码到字节码 字节吗到机器码
5. JAVA里提供了高效的线程操作,但是还是不够, 我们可以通过JVM自己去搞 高效的并发操作
2.3是理论基础 (哪里发生的溢出异常)
4.5 运用 理论进行实践 (如何解决内存溢出的异常 还有自定以JDK)
2、了解其自动内存管理结构(垃圾回收器)
3、虚拟机如何执行程序
4、Java程序如何从源码到字节码 字节吗到机器码
5. JAVA里提供了高效的线程操作,但是还是不够, 我们可以通过JVM自己去搞 高效的并发操作
2.3是理论基础 (哪里发生的溢出异常)
4.5 运用 理论进行实践 (如何解决内存溢出的异常 还有自定以JDK)
目前我学JVM,达到的目标:
1、构建相关的学科框架
2、着重去理解,第二章。内存管理里的内存结构 帮助后续编程;四五章系统优化,暂不管
2、着重去理解,第二章。内存管理里的内存结构 帮助后续编程;四五章系统优化,暂不管
相关知识导图和模型如下:
内存结构:
虚拟机栈: 存放对象引用包括各种基本数据类型(int .对象引用)
栈帧:有关方法的各种信息,局部变量 ,如何去调用方法
本地本地方法栈:作用和栈帧差不多,只不过是存放虚拟机native方法的
堆: 存放各种对象,数组的数据 方法区: 类加载进来之后,类信息(字段 方法 接口)静态量,常量(逻辑上的划分)常量池:运行时期也可以存放相关数据
程序计数器:线程开始时,JVM依据这个程序计数器进行操作
栈帧:有关方法的各种信息,局部变量 ,如何去调用方法
本地本地方法栈:作用和栈帧差不多,只不过是存放虚拟机native方法的
堆: 存放各种对象,数组的数据 方法区: 类加载进来之后,类信息(字段 方法 接口)静态量,常量(逻辑上的划分)常量池:运行时期也可以存放相关数据
程序计数器:线程开始时,JVM依据这个程序计数器进行操作
以上是虚拟机内部的结构,外部还有执行引擎和本地库接口,和其他软件进行相关连接
与相关线程的知识:
堆和方法区是数据共享的
虚拟机栈 本地方法栈 程序计数器是私有的
虚拟机栈 本地方法栈 程序计数器是私有的
GC概念:
GC (GarbageCollection)是垃圾回收机制,在JAVA中开发人员无法使用指针来自由的管理内存,GC是JVM对内存(主要就是对象)进行管理的方式,GC使得JAVA开发人员摆脱了繁琐的内存管理工作,让程序开发更有效率。
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性
相关一些内存结构图片,帮助理解其JVM的内存结构:
阅读全文
0 0
- JVM学习框架及内存结构初略理解
- 深入理解JVM的内存结构及GC机制
- JVM内存结构学习整理
- JVM学习之-JVM内存结构
- JVM学习之-JVM内存结构
- JVM学习之-JVM内存结构
- JVM学习---JVM内存结构、垃圾回收
- JVM内存结构及内存分配策略
- 深入理解JVM之一:Java内存结构
- JVM体系结构-----深入理解内存结构
- JVM内存结构及java相关基础知识
- JVM的基本结构及JVM的内存溢出方式
- JVM内存结构以及GC原理学习
- JVM学习笔记一 之 内存结构
- JVM内存的理解(学习笔记)
- JVM学习笔记(2)------JVM的内存结构
- JVM运行时内存数据区结构及内存参数
- 图解JVM内存结构及内存/栈溢出原因解析
- 深入理解 Android 之 View 的绘制流程(三)_Layout
- fork()函数的do_fork()源码分析
- 关于View.VISIBLE、INVISIBLE、GONE区别
- HDU
- LA 3716
- JVM学习框架及内存结构初略理解
- CentOS7 安装 Virtualenv
- 学习知识复习
- springmvc启动流程源码解析
- Floyd-Warshall算法求矩阵的传递闭包
- 引发的异常:“System.FormatException"
- bootstrap中的样式分类
- Node.js 写入文件流的缓存问题探讨
- git 积累