亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

簡單理解java虛擬機內存區域

標簽:
JVM

1. 简介

jvm在执行java程序的时候会将它所管理的内存划分为若干个不同的输区域,每个区域都有各自的用途。从线程的角度来分下类,jvm内存区域可以分为两类:线程私有和线程共享。
线程私有:虚拟机栈、本地方法栈和程序计数器。
线程共享:堆和方法区。

2. 具体介绍

2.1 程序计数器

程序计数器是当前线程所执行的字节码的行号提示器。简单理解就是根据这个字节码来确定下一步要干什么,比如调用哪个方法、处理哪个异常、执行哪段代码等等。
由于java多线程是轮流切换线程并分配处理器时间来实现的,在任何一个确定的时间里,处理器只能执行一个线程,因此每一个线程都已一个独立的程序计数器。

2.2 虚拟机栈

虚拟机栈是存储虚拟机方法调用时的信息,在调用虚拟机方法时,会生成一个栈帧,把调用方法的局部变量表(基本数据类型、对象引用和returnAdress类型)、操作数帧、动态链接和方法出口等信息放入栈帧,栈帧入栈到虚拟机栈,等方法执行完成时,该栈帧从虚拟机栈出栈。

2.3 本地方法栈

与虚拟机栈功能相同,只不过服务对象是本地方法。

2.4 java堆

java堆是jvm内存区域中最大的一部分,在虚拟机启动的时候创建,用于存放对象的实例。
不得不提java堆是垃圾收集器管理的主要区域。主要分为Eden、From Survivor和To Survivor空间等。而且java堆可以处于物理上不连续的内存空间中,只要逻辑上连续即可。

2.5 方法区

方法区用于存储已经被虚拟机加载的类的基本信息、常量、静态变量以及即时编译器编译后的代码等数据。可以分为永久代和运行时常量池。
运行时常量池一是用于存放编译期生成的各种字面量和符号引用,二是用于存放运行期新的常量,被利用的比较多的String类中的intern()方法。

声明

以上文字为个人理解,如有错误欢迎各位大佬批评指正,谢谢!

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消