Java内存分配

先看《Java编程思想》的介绍

程序运行时,有五个不同的地方可以存储数据,分别是:寄存器、堆栈、堆、常量存储、非RAM存储,以下逐个说明:

一)寄存器。这是最快的存储区,位于处理器内部。空间极小,不能被直接控制(C和C++ 可以向编译器建议寄存器的分配方式)。

二)堆栈。位于通用RAM中,速度仅次于寄存器,要求存储的数据需要有明确的生命周期。一般用来存储基本数据类型和对象的引用。

三)堆。位于RAM中,用于存放所有的java对象。没有明确的生命周期,灵活性高,编译器不需要知道存活时间,所占空间由GC回收。速度比堆栈慢。

四)常量存储。用于存放直接常量,执行代码中出现的字面基本类型和直接字符串都存在此处。

五)非RAM存储。序列化对象,可以将对象存储在磁盘上,可以通过Internet进行对象的传输。


再看JVM的说明

JVM中把内存分的更细,不同JVM对内存的划分还不一样,这里只说JVM规范里声明的几种。

1、程序计数器:非常小,用于指示下一条需要执行的字节码指令

2、虚拟机栈:java方法运行时的栈

3、本地方法栈:本地方法运行时的栈

-------------------------------------------------------------------------------------------------------------

4、java堆:就是熟悉的堆空间

5、方法区: 常量池也属于此位置

6、直接内存:JDK1.4添加了nio,增加了此部分内存


虚线以上的三个隶属于线程,它们随着所在线程的消亡而消亡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值