下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java 内存分配机制通过这几天对一个内存溢出程序的监控,学习了程序运 行时对内存的使用机制,在这里和大家分享下。Java 程序运行在 JVM(Java Virtual Machine , Java 虚拟机 ) 上,可以把 JVM 理解成 Java 程序和操作系统之间的桥梁, JVM 实现了 Java 的平台无关性,由此可见 JVM 的重要性。 所以在学习 Java 内存分配原理的时候一定要牢记这一切都 是在 JVM 中进行的, JVM 是内存分配原理的基础与前提。 一个完整的 Java 程序运行过程会涉及以下内存区域: 寄存器: JVM 内部虚拟寄存器,存取速度非常快,程序不可 控制。栈:保
2、存局部变量的值,包括: a. 用来保存基本数据类型的 值;b.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧。堆:用来存放动态产生的数据, 比如 new 出来的对象。 注意 创建出来的对象只包含属于各自的成员变量,并不包括成员 方法。因为同一个类的对象拥有各自的成员变量,存储在各 自的堆中,但是他们共享该类的方法,并不是每创建一个对 象就把成员方法复制一次。常量池: JVM 为每个已加载的类型维护一个常量池, 常量池 就是这个类型用到的常量的一个有序集合。 包括直接常量 ( 基 本类型, String) 和对其他类型、方法、字段的符号引用。池 中的数据和数组一样通过索引访
3、问。由于常量池包含了一个 类型所有的对其他类型、方法、字段的符号引用,所以常量 池在 Java 的动态链接中起了核心作用。 常量池存在于堆中。 代码段:用来存放从硬盘上读取的源程序代码。 数据段:用来存放 static 定义的静态成员。下图表示内存分配图:对于 java 和内存之间,有如下几点 需要注意:1. 一个 Java 文件,只要有 main 入口方法,我们就认为这是 一个 Java 程序,可以单独编译运行。2. 无论是普通类型的变量还是引用类型的变量 (俗称实例 ), 都可以作为局部变量,他们都可以出现在栈中。只不过普通 类型的变量在栈中直接保存它所对应的值,而引用类型的变 量保存的是
4、一个指向堆区的指针,通过这个指针,就可以找 到这个实例在堆区对应的对象。因此,普通类型变量只在栈 区占用一块内存,而引用类型变量要在栈区和堆区各占一块 内存。3. 分清什么是实例什么是对象。 Class a= new Class(); 此时 a 叫实例,而不能说 a 是对象。实例在栈中,对象在堆中,操作实例实际上是通过实例的指针间接操作对象。多个实例可 以指向同一个对象。4. 栈中的数据和堆中的数据销毁并不是同步的。方法一旦结 束,栈中的局部变量立即销毁,但是堆中对象不一定销毁。 因为可能有其他变量也指向了这个对象,直到栈中没有变量 指向堆中的对象时,它才销毁,而且还不是马上销毁,要等 垃圾回收扫描时才可以被销毁。5. 以上的栈、堆、代码段、数据段等等都是相对于应用程序 而言的。每一个应用程序都对应唯一的一个 JVM 实例,每 一个 JVM 实例都有自己的内存区域,互不影响。并且这些 内存区域是所有线程共享的。这里提到的栈和堆都是整体上 的概念,这些堆栈还可以细分。6 . 类的成员变量在不同对象中各不相同, 都有自己的存储
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 严重精神障碍患者管理指南
- 《GB-T 26599.1-2011激光和激光相关设备 激光光束宽度、发散角和光束传输比的试验方法 第1部分:无像散和简单像散光束》专题研究报告
- 《GBT 29493.7-2013纺织染整助剂中有害物质的测定 第7部分:聚氨酯涂层整 理剂中二异氰酸酯单体的测定》专题研究报告
- 《GB-T 38909-2020民用轻小型无人机系统电磁兼容性要求与试验方法》专题研究报告
- 《GBT 29534-2013温锻冷锻联合成形锻件 通 用技术条件》专题研究报告
- 《GBT 35618-2017 社会保险基金预算编制基本业务规范》专题研究报告
- 《GB-T 39588-2020静电屏蔽包装袋要求及检测方法》专题研究报告
- 《GB-T 13465.2-2014不透性石墨材料试验方法 第2部分:抗弯强度》专题研究报告
- 2026年陕西省西安市单招职业适应性考试题库及完整答案详解1套
- 云计算迁移咨询协议
- 2025至2030中国警用装备行业项目调研及市场前景预测评估报告
- (完整)24个专业105个病种中医临床路径
- 关于某某脑机接口数据采集与使用知情同意书
- 小学音乐期末质量检测方案
- 铁路机车电工知识培训课件
- 绿盟科技安全培训内容课件
- 安生生产法规定
- 2025湖北市政建设集团有限公司管理岗位公开竞聘14人笔试参考题库附带答案详解
- 2025年职业技能鉴定考试(考评员)经典试题及答案
- 2025年广西专业技术人员继续教育公需科目试题及答案
- DB13(J)-T 8557-2023 建设工程消耗量标准及计算规则(房屋修缮建筑工程)
评论
0/150
提交评论