Java基础之jdk1.8 JVM内存模型简述,含String常量池简单分析

本文介绍了JVM内存模型,包括程序计数器、虚拟机栈、本地方法栈、元空间和堆,特别强调了虚拟机栈中的方法帧和异常情况。同时,对Java 1.8中的String常量池进行了深入分析,通过实例解释了不同情况下String对象的创建和引用关系。

高楼大厦,都是平地起的。

整个java体系,其实就一本秘籍,那就是java基础!


就我本人这么多年JAVA研发方面的工作经验来看,基础如果打的扎实,在实际开发工作中会带来极大的助益。

最近有个机会整理JAVA基础相关知识,整理到JVM内存模型这部分的时候,画了两张图,记载在此,供感兴趣的新手参考。


第一张:

JDK1.8 - JVM内存模型说明


  • 程序计数器:它的生命周期与线程相同,线程私有。较小的内存区域,用以完成分支、循环、跳转、异常处理、线程恢复等基础功能。不会发生内存溢出(OutOfMemory=OOM)错误。
  • 虚拟机栈:它的生命周期与线程相同,线程私有。虚拟机栈中存储了方法执行时相关信息,每个方法在调用时都会在虚拟机栈中创建一个方法帧,方法帧中包含了局部变量,参数,运行中间结果等信息。帧数超过限制(-Xss),就会出现StackOverFlow(=SOF)错误。另外超过线程分配的内存大小,也会报OOM错误。
  • 本地方法栈:它的生命周期与线程相同,线程私有。基本同虚拟机栈。存放的是native方法帧。可出现SOF和OOM错误。
  • 元空间(MetaSpace):所有线程共享。存放class加载相关信息。
  • 堆:所有线程共享。存放new出来的数组和对象数据,以
### JDK、JRE 和 JVM 的定义 #### JDK (Java Development Kit) JDKJava 开发工具包,主要用于开发 Java 应用程序。它不仅包了运行 Java 程序所需的组件,还包括了一系列开发工具,如编译器 `javac`、文档生成工具 `javadoc` 及打包工具 `jar` 等[^1]。 #### JRE (Java Runtime Environment) JRE 即 Java 运行环境,是专门为运行已编写好的 Java 程序而设计的软件包。其内部JVM 以及一系列标准类库和其他支持文件,但并不提供任何开发工具。因此,对于仅需执行 Java 应用而不涉及编程工作的用户来说,安装 JRE 就足够了[^5]。 #### JVM (Java Virtual Machine) 作为 JRE 中的关键部分,JVM 负责解释并执行由 Java 编译器产生的字节码。通过实现特定于操作系统的接口来屏蔽底层硬件差异,使得相同的应用能够在多种平台上无缝迁移。此外,JVM 提供了许多高级特性,比如自动化的内存管理和优化技术——即时编译(Just-In-Time Compilation),这有助于提升应用程序性能[^4]。 ### 它们之间的关系 从层次结构上看: - **JVM** 构成了最基础的一层,专注于处理字节码指令集及其对应的本地资源访问; - **JRE** 建立在此之上,除了包完整的 JVM 实现外,还附带了一套丰富的 API 类库,以便开发者能够更方便地构建复杂的功能模块; - **JDK** 则是在 JRE 的基础上进一步扩展而来,加入了更多面向开发者的实用工具和服务,帮助程序员完成编码、测试等一系列任务。 值得注意的是,在实际部署环境中,通常会看到这样的组合形式:JDK → JRE → JVM。这意味着当一台计算机上安装有 JDK 后,默认情况下也会拥有相应的 JRE 版本和支持该版本的 JVM 实例[^2]。 ```java // 示例代码展示如何获取当前使用的JVM信息 public class Main { public static void main(String[] args) { System.out.println("Java Version: " + System.getProperty("java.version")); System.out.println("Java Home: " + System.getProperty("java.home")); // 输出JRE路径 } } ```
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值