jvm内存模型

原创 2016年08月30日 11:17:57

       在学习JVM的时候,首先需要了解JVM的构成。然后在学习里面的gc收集器算法、种类等。
jvm内存模型
蓝色的为线程共有,灰色的为线程私有的。

       所谓线程私有,即在jvm运行的过程中,只有有一个线程使用,就会重新生成一套。而线程共有,则jvm一起共用,与线程的数量没有关系。

程序计数器

       多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指令。线程私有的内存区域。如果执行的是JAVA方法,计数器记录正在执行的java字节码地址,如果执行的是native方法,则计数器为空。

虚拟机栈

       线程私有的,与线程在同一时间创建。管理JAVA方法执行的内存模型。每个方法执行时都会创建一个桢栈来存储方法的的变量表、操作数栈、动态链接方法、返回值、返回地址等信息。栈的大小决定了方法调用的可达深度(递归多少层次,或嵌套调用多少层其他方法,-Xss参数可以设置虚拟机栈大小)。栈的大小可以是固定的,或者是动态扩展的。如果请求的栈深度大于最大可用深度,则抛出stackOverflowError;如果栈是可动态扩展的,但没有内存空间支持扩展,则抛出OutofMemoryError。

本地方法区

       和虚拟机栈功能相似,但管理的不是JAVA方法,是本地方法,本地方法是用C实现的。

       线程共享的,存放所有对象实例和数组。垃圾回收的主要区域。可以分为新生代和老年代(tenured)。
       新生代用于存放刚创建的对象以及年轻的对象,如果对象一直没有被回收,生存得足够长,老年对象就会被移入老年代。
       新生代又可进一步细分为eden、survivorSpace0(s0,from space)、survivorSpace1(s1,to space)。刚创建的对象都放入eden,s0和s1都至少经过一次GC并幸存。如果幸存对象经过一定时间仍存在,则进入老年代(tenured)。

方法区

       线程共享的,用于存放被虚拟机加载的类的元数据信息:如常量、静态变量、即时编译器编译后的代码。也成为永久代。如果hotspot虚拟机确定一个类的定义信息不会被使用,也会将其回收。回收的基本条件至少有:所有该类的实例被回收,而且装载该类的ClassLoader被回收

JVM的类装载流程

       分为三个步骤,加载、链接、初始化,如图
jvm的类加载机制

       小结:JVM的内部组成和各个部分的作用已经做了简单介绍,接下来的文章会对其部分内容进行详细的分析,敬请关注~~~

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

JVM内存模型以及HotSpot的GC策略

本文描述了JVM的内存模型定义、Java自动内存管理概念、以及Oracle官方虚拟机HotSpot在内存管理方面的实现。

数据结构与算法概念解析

数据之间的相互关系称为逻辑结构。通常分为四类基本结构:  集合   结构中的数据元素除了同属于一种类型外,别无其它关系。  线性结构    结构中的数据元素之间存在一对一的关系。  树型结构 ...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

※※深入理解JVM—JVM内存模型※※

我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等...

JAXB(Java Architecture for XML Binding)

marshal(Java对象转化成XML)   import javax.xml.bind.annotation.XmlRootElement; //指定根元素,其他属性默认为根元素的子元素 ...

JVM内存模型和垃圾收集

看《深入理解Java虚拟机》,所作读书笔记。 一、JVM体系结构 二、JVM运行时数据区 堆的划分 三、对象是否可以回收 1、引用计数算法 2、可达性分析算法 GC Roots的对象包括以...

谈谈数据库连接池的原理

这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。

数据结构之数组

数组是应用最广泛的一种数据结构,常常被植入到编程语言中,作为基本数据类型使用,因此,在一些教材中,数组并没有被当做一种数据结构单独拿出来讲解(其实数组就是一段连续的内存,即使在物理内存中不是连续的,在...

JVM基础(1)——内存模型

1. 基本概念1.1 顺序一致性程序执行最简单的模型就是按照指令出现的顺序执行,这叫顺序一致性模型。是一个理想化的内存模型。有以下规则: 一个线程中的所有操作必须按照程序的顺序来执行。 所有线程都只能...

IntelliJ IDEA 创建 hello world Java web Maven项目从头到尾都有图有真相2017版本

学Java的大部分吧都是要整Java web开发项目的,那么最好用的编辑器估计就是这个 IntelliJ IDEA,然后现在maven管理项目是很流行的。 然后我就示范一下,如何使用这个Intelli...

Spring之WEB模块

Spring的WEB模块用于整合Web框架,例如Struts 1、Struts 2、JSF等 整合Struts 1 继承方式 Spring框架提供了ActionSupport类支持Struts ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)