当前位置: 首页 > 知识库问答 >
问题:

java - 官方介绍JVM的文档有吗?

李凯定
2024-07-22

比如说老年代,青年代,永久代,伊甸区,还有垃圾回收的策略,JVM内存结构等等,我不要第三方的资料,我要官方的资料,请问哪里有?

共有2个答案

董联
2024-07-22
https://docs.oracle.com/javase/specs/index.html
毛弘博
2024-07-22

官方JVM文档资源

关于JVM的官方文档资源,Oracle官方提供了详尽的文档来阐述Java虚拟机的各个方面。以下是一些关键的官方文档和资源,涵盖了老年代、青年代、永久代(在JDK 8及之后被元空间(Metaspace)替代)、伊甸区(Eden Space)、垃圾回收策略以及JVM内存结构等主题:

  1. Java虚拟机规范

    • Oracle官方发布的Java虚拟机规范(JVM Specification)是理解JVM工作原理的基石。这份规范详细描述了JVM的架构、指令集、内存管理、类加载、垃圾回收等关键组件。
  2. Java官方文档

    • Java官方文档中的“Java Platform, Standard Edition”部分包含了JVM的详细介绍。你可以在这里找到关于JVM内存结构(如堆、栈、方法区等)、垃圾回收机制(如Minor GC、Major GC、STW等)、类加载机制等方面的详细解释。
  3. JVM调优指南

    • Oracle还提供了JVM调优指南,帮助开发者优化JVM性能。这份指南深入探讨了JVM的内存管理、垃圾回收、线程管理等方面,并提供了一系列调优建议和最佳实践。
  4. JVM性能调优白皮书

    • 虽然这不是官方直接发布的文档,但Oracle的JVM性能调优白皮书是一份非常权威的参考资料,它基于大量的实际案例和性能分析,深入探讨了JVM的性能调优技术和方法。

关于JVM内存结构

  • 堆(Heap):Java虚拟机中的一块内存区域,主要用于存储对象实例和数组。堆被划分为三个部分:年轻代(Young Generation)、老年代(Old Generation)和永久代(在JDK 8及之后被元空间替代)。

    • 年轻代:包含Eden区和Survivor区(S0和S1)。默认情况下,年轻代和老年代的比例为1:2。
    • 老年代:存储长时间存活的对象。
    • 永久代/元空间:存储类的元数据信息。
  • 方法区(Method Area):线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
  • 虚拟机栈(VM Stack):线程私有的内存区域,每个方法在执行时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
  • 本地方法栈(Native Method Stack):与虚拟机栈类似,不过它是为虚拟机使用到的Native方法服务。
  • 程序计数器(Program Counter Register):线程私有的内存区域,用于记录当前线程执行的字节码的行号指示器。

关于垃圾回收

Java虚拟机提供了多种垃圾回收策略,如标记-清除(Mark-Sweep)、复制(Copying)、标记-整理(Mark-Compact)和分代收集(Generational Collection)等。其中,分代收集策略是现代JVM中最为常见的垃圾回收策略,它根据对象存活周期的不同将内存划分为几块,然后根据各块内存的特点采用适当的收集算法。

以上资源都是Oracle官方提供的权威文档和资料,可以帮助你深入了解JVM的各个方面。

 类似资料:
  • 译者注: 原英文文档地址为 https://linkerd.io/docs/ 欢迎来到 linkerd! 本文档将帮助您开始使用。 它分为几个主要部分: 概述:以 high-level 的方式介绍 linkerd 的特性,解释其背后的理由,并介绍文档其余内容中使用的重要概念。 开始:提供在各种环境中设置和运行 linkerd 的具体说明。从这里开始快速入门。 特性:涵盖 linkerd 的主要功能

  • 译注 原英文文档地址为 https://istio.io/docs/ 正文 欢迎来到Istio。 欢迎来到Istio的最新文档主页。从这里您可以通过以下链接了解有关Istio的所有信息: 概念 概念解释了Istio的一些关键点。在这里您可以了解Istio的工作原理及其实现。 安装 在不同的环境下(如Kubernetes、Consul等)安装Istio控制平面,以及在应用程序部署中安装sidecar

  • Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造桌面应用。你可以把它看作是专注于桌面应用而不是 web 服务器的,io.js 的一个变体。

  • Mithril.js 是一个客户端的 JavaScript MVC 框架。可将应用分成数据层、UI层和控制层。Mithril 压缩后只有 3kb 左右。API 提供一个模板引擎,带 DOM diff 实现,支持路由和组合。

  • YOG2 是一个专注于 Node.js UI 中间层的应用框架。它基于 express 和 fis 开发,在享受 express 的灵活扩展能力和 fis 强大的前端工程化能力的同时,引入了自动路由、app 拆分以及后端服务管理模块来保证UI中间层的快速开发与稳定可靠。

  • mpvue 是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js 开发体验。