| |
|
开发:
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.运行时数据区域概述
? ? ? 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
) 方法服务。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |