了解JVM

JVM

我们知道 Java bytecode 运行在 JRE (Java Runtime Environment)上. JRE 是 Java Virtual Machine (JVM)重要的一个概念, JRE负责分析和执行Java byte code.

JRE 包括 Java API和 JVM. JVM 通过Class Loader来读取 Java application并且调用Java API执行.

virtual machine (VM)是一台软件实现的计算机,能像物理计算机一样运行程序,java 设计成运行在VM上的语言以此实现 WORA (Write Once Run Anywhere),所以, JVM可以运行在所有的硬件上来执行 Java Bytecode而不需要改变 Java execution code.

JVM的特征有:

  • 基于栈的虚拟机:Intel x86 和 ARM 的架构都是基于寄存器的,但是, JVM在栈上运行。
  • 符号引用:除了原始数据类型的所有类型(类和接口)都被引用到通过符号引用,而不是通过显式内存地址为基础的参考。
  • 垃圾回收GC: 用户代码显式创建的类实例,由GC自动销毁。
  • 平台独立: 原始数据类型: 传统的语言像 C/C++ 在不同的平台int类型的有不同的size . JVM保证了不管在什么平台原始数据类型的size都一样.
  • 网络字节顺序:java类文件使用网络字节顺序。为了在小端的Intel x86结构和大端的 RISC Series架构之间保持平台的独立性,必须保持一个固定的字节顺序,JVM 使用网络字节顺序, 这是用于网络传输的。网络字节顺序是大端字节序。

Java bytecode

为了实现 WORA, JVM 使用 Java bytecode,这是java和机器语言之间的一种中间语言。

JVM Structure

java源码的运行过程:
JVM Structure

class loader 加载编译好的Java Bytecode 去 Runtime Data Areas, execution engine 执行这些 Java Bytecode.

Class Loader

 class loader

Runtime Data Areas

Runtime Data Areas

Runtime Data Areas 是当JVM program 运行的时候系统分配的一个内存区域 , runtime data areas分为 6 个区域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值