写点什么

Java JVM 知识汇总

  • 2022 年 5 月 10 日
  • 本文字数:694 字

    阅读完需:约 2 分钟

  • GC:分代回收的思想和依据,以及不同垃圾回收算法实现的思路、适合的场景。

  • 性能调优:常用的 JVM 优化参数的作用,参数调优的依据,常用的 JVM 分析工具能分析哪类问题,以及使用方法。

  • 执行模式:解释、编译、混合模式的优缺点,Java7 提供的分层编译技术。需要知道 JIT 即时编译技术和 OSR(栈上替换),知道?C1、C2?编译器针对的场景,其中 C2?针对 Server?模式,优化更激进。在新技术方面可以了解?Java10 提供的由 Java 实现的 Graal 编译器。

  • 编译优化:前端编译器?javac 的编译过程、AST 抽象语法树、编译期优化和运行期优化。编译优化的常用技术包括公共子表达式的消除、方法内联 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 、逃逸分析、栈上分配、同步消除等。明白了这些才能写出对编译器友好的代码。


下面咱们通过各个方面来理解 JVM 的这些知识。


2、JVM 工作流程


==========


我相信有些人跟我一样对内存的堆内存(heap)和栈内存(Stack)是怎么划分的不是很清楚,看完这块保你明白的彻彻底底。


Java 的内存区域划分实际上远比这复杂:Java 虚拟机在执行 Java 程序的过程中,会把它所管理的内存划分为不同的数据区域。下面这张图描述了一个 Scc.java 文件被 JVM 加载到内存中的过程:


  1. Scc.java 文件首先需要经过编译器编译,生成 Scc.class 字节码文件。

  2. Java 程序中访问 Scc 这个类时,需要通过 ClassLoader(类加载器)将 Scc.class 加载到 JVM 的内存中。

  3. JVM 中的内存可以划分为若干个不同的数据区域,主要分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区。



3、相关推荐


======

????????Java 垃圾回收(GC)

[](()

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Java JVM知识汇总_Java_爱好编程进阶_InfoQ写作社区