IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JVM—运行时数据区域 -> 正文阅读

[Java知识库]JVM—运行时数据区域

目录

1.运行时数据区域概述

2.具体内容

2.1 线程共享的数据区

?2.1.1 方法区

? 2.1.1.1?运行时常量池

?2.1.2 堆

2.2 线程独享的数据区

?2.2.1 程序计数器

?2.2.2 虚拟机栈

?2.2.3 本地方法栈


1.运行时数据区域概述

? ? ? Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。
这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。

2.具体内容

Java虚拟机所管理的内存将会包括以下几个运行时数据区域

2.1 线程共享的数据区

?2.1.1 方法区

存储已被虚拟机加载 的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
与“永久代”并不等价
到了JDK 7 HotSpot ,已经把原本放在永久代的字符串常量池、静态变量等移出,而到了
JDK 8 ,终于完全废弃了永久代的概念,改用与 JRockit J9 一样在本地内存中实现的元空间( Meta- space)来代替,把 JDK 7 中永久代还剩余的内容(主要是类型信息)全部移到元空间中。

? 2.1.1.1?运行时常量池

?运行时常量池是方法区的一部分。

Class文件用除了类的版本、字段、方法、接口等描述信息外,还有一项常量池表,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。

具有动态性,可自动申请空间。

并不要求常量 一定只有编译期才能产生,也就是说,并非预置入Class文件中常量池的内容才能进入方法区运行时常 量池,运行期间也可以将新的常量放入池中,这种特性被开发人员利用得比较多的便是String类的 intern()方法。

运行时常量池是方法区的一部分,自然也受到方法区的内存限制,当常量池无法再申请到内存空间是会抛出OutOfMemoryErro异常。

?2.1.2 堆

Java 堆是被所 有线程共享的一块内存区域
存放对象实例, Java 世界里“ 几乎 所有的对象实例都在这里分配内存。(有一些对象可能被分配到栈上)
java堆是垃圾收集器管理的内存区域。
从分配内存的角度看,所有的线程共享的Java堆中可以划分出多个线程私有发分配缓冲区,将Java堆细分的目的只是为了更好的回收内存,或者更快的分配内存

也会内存移除

物理上不连续,逻辑上连续

2.2 线程独享的数据区

?2.2.1 程序计数器

是一块较小的内存空间,程序运行过程中指向下一行该运行谁了,

它是程序控制流的指示器,分支、循环、跳转、异常处 理、线程恢复等基础功能都需要依赖这个计数器来完成。

单核cpu多线程中为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器。相互之间不影响,独立内存。

?2.2.2 虚拟机栈

伴随java程序执行的产物,

每个方法被执行的时候, Java 虚拟机都 会同步创建一个栈帧 (Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程
可以存放所有基本类型数据,对象引用(reference类型)和returnAddress类型(指向了一条字节码指令的地址)。
java虚拟机栈可以动态扩展,向内存进行申请。如果申请不到就会抛出StackOverflowError异常(HotSpot 虚拟机的栈容量是不可以动态扩展的,其他的可以)

?2.2.3 本地方法栈

本地方法栈为虚拟机使用到的本地(Native ) 方法服务。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:07:36  更:2022-03-16 22:07:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:33:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码