欢迎来到天天文库
浏览记录
ID:34707851
大小:50.37 KB
页数:4页
时间:2019-03-09
《java内存空间划分初识(适合初学者)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java内存空间划分初识(适合初学者)前言:在编程中,自己归纳过那些变量会被初始化,可是全靠死记硬背,实际开发中还老犯错。后来在看书中,了解是自己对Java内存空间的认识不足。今天通过看视频,查阅书籍和网上查询,简单归纳了Java内存空间划分,使得自己对Java数据分类和运用有很大的提升。现在分享给大家,希望能有一些帮助和启发。同其他软件一样,JVM从计算机获取一片内存。JVM中的内存划分为五个区域,每个区域有着不同的数据处理方式。分别是:1、寄存器。--给CPU用的地方,一般Java程序员可不做过
2、多学习。2、本地方法区。--与所在系统相关,分不同版本。具体系统可部分学习。3、方法区。--后面JAVA应该深入学习部分,初学者可暂时放一放。4、栈内存。--(下面详讲。)5、堆内存。--(下面详讲。)一、栈内存。1、存放的是什么?答:存储的都是局部变量。(局部变量所属方法也进栈中。局部变量都在方法中,方法不进栈,局部变量就没办法进栈。)2、变量所属的作用域一旦结束,该变量就自动释放。(栈内存更新很快,因为变量的生命周期很短。)(局部代码块,限定局部变量的生命周期。)小结:栈内存更新速率很快。一、堆
3、内存。1、存放的什么?答:存储是数组和对象(其实数组就是对象)。凡是new建立在堆中。2、堆内存的特点:(1)每一个实体都有首地址值。(2)堆内存中的每一个变量都有默认初始化值;根据类型的不同而不同。整数是0,小数是0.0或者0.0f,boolean是false,char是‘u000’。(’u0000’指Unicode下的空格。)(3)垃圾回收机制。3、堆特点的附带说明(1)实体存在对内存中,有一个内存地址。(2)堆中如果未赋值会默认初始化,这是堆内存特点,栈内存中变量就不行。(3)实体首地址值
4、存储在引用数据变量中,引用数据变量根据实体首地址指向实体。(4)引用数据变量不像基本数据变量,基本数据变量直接把实体存放在变量空间中。(5)引用数据变量,称为变量A引用了堆中一个实体。(或者指向,这点想C++中指针。)(6)引用数据变量只能指向实体或null。(null取消指向。Null存放位置是引用变量首地址值所在的位置。)(7)实体没有引用,就会被视为垃圾,等待回收,不会立即释放。JVM自有一套垃圾回收机制,不定时。所以堆内存的更新速率不是很快。一、附带简单说明下实体内存地址。例如[I@c171
5、641、@左边的”[I“是指实体类型,这里的”[“指数组,”I”指int类型。2、@右边的”c17164“是Java调用windows,通过hash算法创建的内存地址,绝对不会重复。本身是16进制地址。如有好的建议,可留言或发至笔者邮箱:fzb_xxzy@163.com
此文档下载收益归作者所有