JAVA内存管理模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【参考文献】 1. 樊瑞君. 从评估工作看加强高职院校档案管理工作的必要 性[J]. 中国教育与社会科学,2009 2. 王峰. 从高校教学评估看档案管理工作的重要性[J]. 中国 市场,2009
·248·
Industrial & Science Tribune 2011.(10).12
产业与科技论坛 2011 年第 10 卷第 12 期
( 四) 提高对档案管理工作的认识,增强档案意识。为了 更好地发挥档案工作的重要作用,高校档案管理部门应广泛 开展档案法规、意识、宣传活动,让全体教职员工更多地了解 档案、关心档案,提高对档案工作重要性的认识,调动他们形 成档案、保护档案 的 自 觉 性,加 强 档 案 管 理 工 作 的 服 务 意 识 要从根本上改变过去“重保管、轻利用”的现象,转变观念,把 工作的重点放在 档 案 资 源 的 开 发 与 利 用 上 ,搞 活 档 案 工 作。 使档案工作与学校工作同步开展。
( 一) 栈( stack) ,存在于 RAM 中。栈对内存的操作方式 是,从处理器那里得到指令后,通过内部的“栈指针”来具体 执行,指针向下移动就是分配一个新内存给变量; 如指针向 上移动,则代表 释 放 该 部 分 内 存。 这 种 分 配 方 式 方 便 快 捷, 效率仅次于寄存器。由于栈在运行时要确定所有数据的大 小以及它们 的“生 命 周 期 ”,以 便 操 作 栈 指 针 进 行 相 应 的 移 动,这就对程序的灵活度造成了一定的影响。所以,JAVA 只 是把所有的局部变量,形式参数以及对象的句柄变量等分配 到栈中,因为这 些 内 容 在 运 行 时 都 可 以 是 确 定 的。 另 外,方 法调用也是在栈 内 进 行 的,调 用 方 法 的 时 候,栈 为 该 方 法 的 参数及局部变量 分 配 空 间,当 方 法 调 用 结 束 以 后,这 部 分 空 间会被自动释放出来。
产业与科技论坛 2011 年第 10 卷第 12 期
JAVA 内存管理模式研究
□秦靖伟
【摘 要】由于 JAVA 的纯面向对象的特性,编程中会频繁地进行对象的操作,深入理解对象及变量方法等在内存中的分配过 程有助于设计合理高效的程序,对于 Java 虚拟机优化垃圾收集及程序的能耗优化有着重要的指导意义。本文通过 对 Java 虚拟机内存区域的分析,对内存的分配问题进行了详细地阐述。
类加载器
方法区 堆区 栈区 寄存器 常量池 运行时数据区
执行引擎 JAVA 是如何来管理分配内存的呢? Java 的内存分配主 要有三种: 一是方法区,存放静态变量和方法信息。该区域 在程序编译时就分配好了空间大小,为了避免导致编译程序 无法计算准确的存储空间需求,这种分配方式要求程序中不
能有不确定的数 据 结 构,更 不 允 许 有 嵌 套,甚 至 于 递 归 等 结 构的出现; 二是栈区,即各种原始数据类型的局部变量都是 在栈上创建出来的,并且当程序退出该变量的作用范围的时 候这个变量的内存就会被自动释放。和方法区的分配相反, 在栈区,程序在编 译 时 对 数 据 的 状 态 是 未 知 的,这 要 到 运 行 时才能知道。三是堆区,该区域负责分配在编译时和运行时 都不能确定存储需求的数据结构的内存,如对象( 包括数组) 都是在堆中创建的。程序在运行时通过 new 关键字来创建 对象,对象创建时 会 在 堆 中 为 其 分 配 内 存,当 对 象 不 再 被 用 到时,会被 GC 垃圾回收机制自动回收,GC 这时就必须监控 对每一个对象的 运 行 状 态,如 对 象 的 申 请、引 用、被 引 用、赋 值等,GC 都需要进行监控,其目的是简化了程序员的工作。 但却加重了 JVM 的工作。这也就是为什么 Java 程序运行速 度较慢的原因。
除了这三个区域外,还有寄存器和常量池。其中的寄存 器,由于处在处理器内部,所以运行起来速度肯定是最快的, 但是由于其容量非常小,且是直接受处理器控制而非人为控 制,所以我们无法掌控。常量池是用来存放确定性的符号引 用的,如类和接口的全限定名,字段和方法的描述符等。
三、JVM 中堆和栈的区别与比较 在 JAVA 中,栈与堆在内存中都被 Java 用来存放数据。 Java 自动管理栈和堆,这一点与 C + + 不同。单纯从功能作用 来说,堆主要用来 存 放 对 象,栈 中 一 般 用 来 存 放 一 些 基 本 类 型的变量和对象句柄。
总之,随着高职 院 校 整 体 规 模 的 不 断 发 展 和 壮 大,必 须 建立、健全 完 善 的 档 案 管 理 制 度。 以 适 应 新 形 势 发 展Baidu Nhomakorabea的 需
求,最终通过科学 管 理 和 有 效 开 发 利 用 档 案,促 进 高 职 院 校 的发展。把档案管理工作纳入科学化、标准化、制度化、规范 化、专业化轨道。逐 步 实 现 现 代 化,从 而 使 档 案 在 院 校 的 各 项工作中发挥更好的促进作用。
栈的特点决定了它的优势是速度快,存取效率仅次于寄 存器。但存于其中的数据大小与生存期在运行时需要被确 定,使得灵活性不够,则是其缺点所在。
【关键词】Java,堆内存; 栈内存; 静态域; 常量池; 内存分配 【作者单位】秦靖伟,吉林工商学院信息工程分院
▲ ▲
一、引言 JAVA 自上个世纪 90 年代初期诞生以来,发展到今天已 经被业界广泛的认可,其为编程( 尤其是网络编程) 方面所带 来的巨大变革,是其他语言所不可比拟的。它以自身的纯粹 的面向对象,分布 式,安 全 性,健 壮 性,与 平 台 无 关 性 等 特 点 正在被全世界的程序员所推崇。但伴随而来的也有一些质 疑,比如 JAVA 在编制桌面程序,以及在程序的执行效率方面 确实还有差强人意的地方,其原因何在? 本文试就上述问 题,从内存的角度分析 JAVA 的内部机制,以使读者更深入地 了解和掌握 JAVA 语言。 二、Java 的内存分配策略 JAVA 程序在运行时,不同平台上的 JVM 都会提供如下 图所示的运行时数据区组件:
相关文档
最新文档