cpper 转 java
快速上手 java 特性
文章目录
- java 语言特点
- JVM
- 工作过程
- 组成
java 语言特点
Java 程序编译成字节码,然后由 Java 虚拟机(JVM)执行
不同平台适配相同的 JVM ,从而使得 Java 程序具备跨平台性 —— 一次编写,到处运行 Write Once, Run Anywhere, WORA
Java 没有指针、多个继承
Java 是纯面向对象语言,几乎所有的内容都是对象(除了基本数据类型)。没有全局函数。
Java 异常处理机制非常健全,所有的异常(checked exceptions)都必须显式地处理或声明,避免了错误的遗漏。
JVM
Java Virtual Machine
Java 虚拟机
工作过程
-
Java 源代码(.java 文件)首先被 Java 编译器(javac)编译成字节码文件(.class 文件)。
-
字节码文件通过 类加载器(Class Loader) 加载到 JVM 中。
类加载器负责查找、加载并验证字节码文件,然后将其传递给 JVM 执行。 -
JVM 会将加载的字节码转换为特定平台的机器代码,然后执行。
JVM 可以通过解释执行(逐行转换)或即时编译(JIT)来执行字节码。 -
JVM 在执行 Java 程序时,会在内存中创建不同的运行时数据区来存储程序的各类数据。
组成
- 类加载器 Class Loader
类加载器的任务是从文件系统、网络或其他来源加载 .class 文件到内存,并将字节码转化为 JVM 可以操作的数据结构。 - 运行时数据区
- 方法区(Method Area)
存储类信息、常量池、静态变量、即时编译后的代码等数据 - 堆
- 栈
- 程序计数器,
- 本地方法栈(调用非java方法)
- 方法区(Method Area)
- 执行引擎 Execution Engine
负责将字节码转换为机器代码并执行- 解释器(Interpreter)
解释器逐条解释字节码,并执行每一条指令。(慢) - 即时编译器(JIT Compiler)
即时编译器会把热点代码(即频繁调用的代码)编译成机器码,以提升执行效率。JIT 编译通常发生在程序运行时,它可以显著提高程序的性能,尤其是在长时间运行的应用中。
- 解释器(Interpreter)
- 垃圾回收器 GC Garbage Collector
GC 会检查堆内存中的对象,并确定哪些对象不再被引用,随后会释放这些对象占用的内存。- 标记-清除(Mark-Sweep):标记所有活跃的对象,然后清除不活跃的对象。
- 复制算法(Copying):将存活的对象从一部分内存区域复制到另一部分内存,剩余的内存区域被清空。
- 分代收集(Generational Collection):Java 中的垃圾回收采用分代收集策略,根据对象的生命周期将堆内存划分为不同的区域(年轻代、老年代等),每个区域使用不同的垃圾回收算法。