没有合适的资源?快使用搜索试试~ 我知道了~
java技术面试必问:JVM-内存模型讲解.docx
0 下载量 69 浏览量
2022-12-16
01:09:01
上传
评论
收藏 13KB DOCX 举报
温馨提示
试读
3页
java技术面试必问:JVM-内存模型讲解.docx
资源推荐
资源详情
资源评论
java技术面试必问:JVM内存模型讲解
今天我们就来聊一聊Java内存模型,面试中面试官会通过考察你对jvm的理解更深 入得
了解你的水平。在了解jvm内存模型前我们先回顾下,java程序的执行过程:
java文件在通过java编译器生产.class字节码文件,然后由jvm中的类加载器加 载各个
类中的字节码文件,加载完成后由jvm执行引擎执行,在整个加载过程中,jvm用一 段空间来存
储程序执行期间需要的数据和相关信息,这个空间就叫做jvm内存。
一、JVM的重要性
首先你应该知道,运行一个Java应用程序,我们必须要先安装JDK或者JRE。 这是因为
Java应用在编译后会变成字节码,然后通过字节码运行在JVM中,而JVM是 JRE的核心组成部分
。
二、优点
JVM不仅承担了 Java字节码的分析(JIT compiler)和执行(Runtime),同时也 内置了自
动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄 露和内存溢
出风险,使Java开发人员不需要关注每个对象的内存分配以及回收,从而更专 注于业务本身。
三、缺点
这个机制在提升Java开发效率的同时,也容易使Java开发人员过度依赖于自动 化,弱
化对内存的管理能力,这样系统就很容易发生JVM的堆内存异常、垃圾回收(GC) 的不合适以及GC
次数过于频繁等问题,这些都将直接影响到应用服务的性能。
四、内存模型
JVM内存模型共分为5个区:堆(Heap)、方法区(Method Area)、程序 计数器(Program
Counter Register)、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack) 。
其中,堆(Heap)、方法区(Method Area)为 线程共享,程序计数器(Program Counter
Register)、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack) 为 线程隔离。
五、堆(Heap)
堆是JVM内存中最大的一块内存空间,该内存被所有线程共享,几乎所有对象和数 组都
被分配到了堆内存中。
堆被划分为新生代和老年代,新生代又被进一步划分为Eden区和Survivor区, 最后
Survivor 由 From Survivor 和 To Survivor 组成。
随着Java版本的更新,其内容又有了一些新的变化:在Java6版本中,永久代在 非堆内
存区;到了 Java7版本,永久代的静态变量和运行时常量池被合并到了堆中;而到 了 Java8,
永久代被 元空间(处于本地内存)取代了。
资源评论
xinkai1688
- 粉丝: 320
- 资源: 8万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功