Java内存空间划分初识(适合初学者).docx

Java内存空间划分初识(适合初学者).docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java内存空间划分初识(适合初学者)

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

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档