前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java虚拟机JVM介绍

Java虚拟机JVM介绍

作者头像
运维开发王义杰
发布2023-08-16 20:16:46
发布2023-08-16 20:16:46
1720
举报

Java虚拟机(JVM)是一个抽象的计算机,它为Java字节码提供了一个运行环境。以下是与JVM相关的一些主要概念:

  1. 字节码(Bytecode):Java编译器将.java源文件编译成平台无关的字节码(.class文件)。这些字节码可以在任何JVM上运行。
  2. 垃圾收集(Garbage Collection):这是JVM中的一个重要特性。当程序创建新的对象时,JVM会自动分配内存。当这些对象不再需要时,垃圾收集器会自动回收它们的内存。这极大地简化了内存管理。
  3. 类加载器(Class Loader):类加载器负责加载类到JVM中。JVM有一个运行时类加载器,可以动态地加载类。
  4. 执行引擎(Execution Engine):执行引擎负责运行字节码。最初,字节码被解释执行。现代JVM(如HotSpot)使用即时编译(JIT)技术,可以将热点代码编译成本地代码,以提高性能。
  5. 堆(Heap):堆是JVM中的一块内存区域,用于存储对象实例。所有线程共享堆中的对象。
  6. 方法区(Method Area):方法区是一种存储每个类的结构信息的内存区域,如运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容。
  7. 栈(Stack):每个线程在JVM中都有一个私有的Java栈。它包含了一个方法执行的状态,包括局部变量和中间计算的结果。
  8. 程序计数器(Program Counter Register):程序计数器是每个线程的私有内存,它存储了当前线程执行的字节码指令的地址。
  9. 本地方法栈(Native Method Stack):本地方法栈包含了Java方法(也称为本地方法)的状态。
  10. Java Native Interface (JNI):JNI是一个标准编程接口,它允许Java代码与其他语言写的代码交互,主要用于与C、C++等语言的库进行交互。
  11. 直接内存(Direct Memory):直接内存并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。在JDK 1.4中新引入了NIO(New Input/Output)类,引发了直接内存的使用。Java程序通过堆上的DirectByteBuffer来访问直接内存。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档