文档章节

jvm运行时数据区域

大羌
 大羌
发布于 2017/08/10 22:29
字数 638
阅读 9
收藏 0

1、程序计数器

     它可以看作当前线程所执行的字节码的行号指示令;在单核多线程的环境下,线程之间会

进行上下文切换,交替使用cpu, 在交替的过程中,程序计数器会记录该线程执行到哪儿了, 然后继续执行。

2、Java虚拟机栈

      Java虚拟机栈描述的是Java方法执行的内存模型;每个方法在执行的同时会生成一个栈

帧,用于存储局部变量,操作数栈,动态链接,方法的出口信息,每个方法调用到完成的过程,都对应一个

栈帧在虚拟机栈中从入栈到出栈;

      局部变量表:存放编译器可知的各种基本数据类型,对象引用;

     如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverFlowError 异常;类似于数组IndexOutOfBounds异常;

     如果虚拟机栈可以额动态扩展, 如果扩展的时候无法申请到足够的内存,就会抛出OutOfMemoryError异常;

3、本地方法栈

    与Java虚拟机栈所发挥的作用非常相似,本地方法栈则是虚拟机使用到的native方法;

4、Java堆

     Java堆是所有线程共享的一块内存区域,在虚拟机启动时候创建,所有的对象实例和数组都要在堆上分配;

     堆还可以细分为:新生代,老年代,永久代perm;再细致点新生代分为:Eden空间,From Survivor空间,To Survivor空间;基本上的分配比例为8:1:1,垃圾回收(标记-复制的时候)需要用到。

5、方法区

     各个线程共享的内存区域,用于存放已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的

代码的等数据;功能类似于堆,但是 non-heap

6、运行时常量池

   Runtime Constant pool 是方法区的一部分,class 文件中除了有类的版本,字段,方法,接口等描述信息

外,还有一项信息是常量池,用于存放编译器期生成的各种字面常量和符号引用,这部分内容将在类加载后

进入方法区的的运行时常量池中存放,ps:各种字面量类似于反编译的时候回看见各种数字,这些数字会单独

的存放到常量池里面;

7、直接内存、

 

© 著作权归作者所有

共有 人打赏支持
大羌
粉丝 0
博文 30
码字总数 13657
作品 0
成都
程序员
私信 提问
JVM内存结构 VS Java内存模型 VS Java对象模型

Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和...

Java架构
07/11
0
0
JVM学习总结(一)运行时数据区

《深入Java虚拟机》这本书买了有一段时间了,当时看的时候就只是看,并没有边看边总结啥的,最后发现到脑子里面的根本所剩无几了。现在开始要好好归纳总结地再学习一遍。 运行时数据区域 JV...

hensemlee
04/22
0
0
Java虚拟机JVM内部体系结构

Java虚拟机JVM内部体系结构 易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。 JVM(Java虚拟机)是一个抽象...

LYQ1990
07/18
0
0
Java虚拟机运行时数据区结构

本文部分参考自《Java虚拟机规范(Java SE 7版)》的中译本和周志明的《深入理解Java虚拟机》,另加个人理解。原书对Java虚拟机运行时数据区描述只有6页,同时参考其他网络网资料,个人能力所...

foodon
2014/12/09
0
4
【JVM】 java内存区域与内存溢出异常

前言 此系列博客是读《深入理解java虚拟机》所做的笔记整理。 No1. JVM内存管理这堵墙? 对C和C++的开发人员来说,在内存管理领域,他们既拥有每一个对象的“所有权”,也担负着每一个对象生...

binggetong
05/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0
Kernel I2C子系统

备注:所有图片来源于网络 1,I2C协议: 物理拓扑: I2C总线由两根信号线组成,一条是时钟信号线SCL,一条是数据信号线SDA。一条I2C总线可以接多个设备,每个设备都接入I2C总线的SCL和SDA。I...

yepanl
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部