Java内存分配

发布时间:2016-12-6 13:51:34 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Java内存分配",主要涉及到Java内存分配方面的内容,对于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,增加了此部分内存 虚线以上的三个隶属于线程,它们随着所在线程的消亡而消亡。

上一篇:机器视觉相关术语
下一篇:看完你就完全可以去工作了,谁敢不要!?

相关文章

关键词: Java内存分配

相关评论