Java JVM基础

179 阅读1分钟

java的理解

  • 平台无关性:一次编译,到处运行
  • GC:垃圾回收,不必像C++一样手动释放堆内存,由JVM自动完成
  • 语言特性:泛型、反射、Lambda表达式
  • 面向对象:封装、继承、多态
  • 类库:Java自带的库,如并发、集合、IO、网络有关等的库
  • 异常处理:抛出异常和捕获异常 ####java如何实现平台无关性 Java源码首先被编译成字节码,Java语言在不同平台上运行时不需进行重新编译。由相应平台上的JVM将字节码转换成具体平台上的机器指令。
    java如何实现跨平台

为何JVM不直接将源码解析成机器码执行 避免每次执行前都执行各种检查,以及扩展了兼容性即可以将别的语言(Ruby、Scala)解析成字节码去执行

JVM架构

JVM

  • Class Loader:依据特定格式,加载Class文件到内存
  • Execution Engine:对命令进行解析
  • Native Interface:融合不同开发语言的原生库为Java所用
  • Runtime Data Area:JVM内存空间结构模型

JVM如何加载class文件: (简要)Class Loader加载符合要求的Class文件到内存中,并通过Execution Engine去解析Class里面的字节码提交给操作系统去执行

Java--反射

Java--ClassLoader