JVM底层存储示意图

一、正如我们所知道的,在java中一切事物皆对象,那么让我们从类开始说起,一开始,我们都会从如下代码开始:

public class Hello{
    public static void main(){
        System.out.println("Hello World");
   }
}
  • 但是底层究竟是怎么运转的,初学者都会很迷茫,我也是如此,后来在学习的时候,才渐渐明白,其实所谓的类和对象,就是一个东西,只不过这个玩意儿,很特别,在你编码的时候,所谓的class就是一个逻辑模型,专门让程序员看的,在运行的时候就会变成物理结构,占用实际的内存空间,做真实的事情。

  • 列表内容我很佩服SUN公司的那帮程序员,把底层的结构封装的那么好,大大简化了过程,使得编码的思维风格更倾向于人的思维,程序有很强的伸缩性,复杂程度可以自行控制。
    附图如下:
    这里写图片描述

### Java程序运行流程详解 Java程序的运行流程可以分为以下几个阶段,这些阶段共同构成了完整的Java应用程序生命周期。以下是详细的描述以及对应的流程说明。 #### 1. 编写源代码 开发者编写Java源代码文件(`.java` 文件)。这是整个流程的第一步,也是程序员的主要工作内容[^1]。 #### 2. 编译源代码 通过 `javac.exe` 工具将 `.java` 文件编译为字节码文件(`.class` 文件)。这个过程是由Java编译器完成的,它负责检查语法错误并将高级语言转换为中间表示形式——字节码[^3]。 ```bash javac HelloWorld.java ``` 此命令会生成一个名为 `HelloWorld.class` 的字节码文件。 #### 3. 加载字节码 类加载器(Class Loader)负责将 `.class` 字节码文件加载到JVM中。在这个阶段,JVM会验证字节码的有效性和安全性,并为其分配必要的内存资源[^2]。 #### 4. 执行字节码 字节码被传递给JVM执行引擎(Execution Engine),后者将其逐步解释为机器指令并执行。为了提高性能,即时编译器(Just-In-Time Compiler, JIT)可能会动态地将某些热点代码优化为本地机器码[^5]。 #### 5. 内存管理 在程序运行期间,JVM会在其运行时数据区域(Runtime Data Area)中存储所需的各种数据结构和信息。这包括栈、堆、方法区等重要组成部分。其中,垃圾收集器(Garbage Collector, GC)自动回收不再使用的对象所占用的空间[^2]。 --- ### 流程示意 下面是Java程序运行流程的一个简化版流程: ```plaintext +-------------------+ | 编写源代码 | | (.java) | +-------------------+ ↓ +-------------------+ | 编译为字节码 | | (javac -> .class)| +-------------------+ ↓ +-------------------+ | 类加载 | | (ClassLoader) | +-------------------+ ↓ +-------------------+ | 执行字节码 | | (Execution Engine)| +-------------------+ ↓ +-------------------+ | 内存管理 | | (GC & Runtime DA)| +-------------------+ ``` --- ### 关键组件解析 - **Java编译器 (`javac`)** 负责将人类可读的Java源代码转化为跨平台兼容的字节码文件。 - **JVMJava Virtual Machine)** JVMJava的核心运行环境,提供了字节码的解释与执行功能。它的主要模块包括类加载器、执行引擎和运行时数据区域[^2]。 - **字节码** 是一种中间表示形式,独立于底层硬件架构,使得Java具有“一次编译,到处运行”的特性[^3]。 - **即时编译器 (JIT)** 提高了程序运行效率,特别是在处理频繁调用的方法或循环时效果显著。 --- ### 示例代码演示 下面是一个简单的Java程序及其运行流程示例: ```java // HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 1. 使用 `javac HelloWorld.java` 将其编译为字节码。 2. 使用 `java HelloWorld` 启动JVM并运行该程序。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值