【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

简介: 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存

文章目录

一、JDK 体系结构

二、Java 源码运行原理

三、Java 虚拟机内存结构





一、JDK 体系结构


JDK 体系结构 : 下图所有的内容都是 JDK 体系中的组成元素 ;


Java Language : 最上层是 Java 语言 ;


Tools & Tool APIs : 指令工具集 , 手动编译 Java 源码时会用到 , 如 java 执行字节码程序 , javac 编译字节码程序 , javadoc 生成 Java 文档 ;


JRE : 橙色部分以下的都是 JRE 运行环境 ;


Java Virtual Machine : Java 运行最重要的基础是 Java 虚拟机 , 也就是下图最底层的 " Java Virtual Machine " , 这是 Java 代码一次编译 , 到处运行的基础 , Java 程序实际上是运行在虚拟机上的 ;


image.png






二、Java 源码运行原理


Java 源码运行原理 :


编写一个 HelloWorld.java ,


public class HelloWorld{
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}


使用 Javac 命令编译上述源码 ,


javac HelloWorld.java


得到 HelloWorld.class 字节码文件 ,

image.png



使用 java 命令执行上述字节码文件 , 将字节码文件装载到 Java 虚拟机 中 ,


java HelloWorld

image.png



Java 虚拟机是使用 软件 模拟 完整硬件系统功能 , 这是一个完全隔离环境的完整的计算机系统 ,


如果当前系统是 WIndows 操作系统 , Java 虚拟机会将字节码文件转为 Windows 机器码 , 在 Windows 系统中运行 ;

如果当前系统是 Linux 操作系统 , Java 虚拟机会将字节码文件转为 Linux 机器码 , 在 Linux 系统中运行 ;

在不同的操作系统中 , Java 虚拟机的底层实现是不同的 ;






三、Java 虚拟机内存结构


使用 java 命令 , 将 HelloWorld.class 字节码装载到 Java 虚拟机之后 ,


java HelloWorld.class

先通过 " 类装载子系统 " 加载字节码文件 , 使用类加载器将 class 文件装载到 Java 虚拟机 内存中 ;


Java 虚拟机内存 模型 就是 运行时数据区 , 这部分内存可划分为以下 5 55 个区域 :


堆区 : 对象创建好之后都放在堆内存中 ;

方法区 ( 元空间 ) ;

栈 ( 线程栈 | 线程私有 ) : 存放线程运行的局部变量数据 , 是线程私有的控件

本地方法栈 ( 线程私有 ) : 本地方法栈 存放的是 Jni 调用中 , C/C++ 的方法栈 ;

程序计数器 ( 线程私有 ) ;


堆区 和 方法区 ( 元空间 ) 是所有线程 共享的区域 ;


栈 ( 线程栈 ) , 本地方法栈 , 程序计数器 是 线程私有的区域 ;


目录
相关文章
|
5月前
|
监控 算法 Java
Java虚拟机(JVM)的垃圾回收机制深度解析####
本文深入探讨了Java虚拟机(JVM)的垃圾回收机制,旨在揭示其背后的工作原理与优化策略。我们将从垃圾回收的基本概念入手,逐步剖析标记-清除、复制算法、标记-整理等主流垃圾回收算法的原理与实现细节。通过对比不同算法的优缺点及适用场景,为开发者提供优化Java应用性能与内存管理的实践指南。 ####
|
1月前
|
监控 网络安全 虚拟化
Hyper-V中Win10,虚拟机运行错误处理的方案
当Hyper-V中的Windows 10虚拟机出现运行错误时,可按以下步骤处理:首先进行基本检查与修复,包括检查虚拟机配置、确保Hyper-V服务正常运行及重启相关服务。其次,使用PowerShell命令或DISM工具修复虚拟机配置和系统组件。接着,查看事件查看器中的错误日志,分析问题原因。调整虚拟机资源分配,优化性能。针对特定错误情况,如启动失败或网络问题,采取相应措施解决。若问题仍未解决,考虑克隆、重置或重新安装虚拟机,必要时联系技术支持。操作前请备份重要数据并以管理员身份运行命令。
|
4月前
|
监控 算法 Java
Java虚拟机(JVM)垃圾回收机制深度剖析与优化策略####
本文作为一篇技术性文章,深入探讨了Java虚拟机(JVM)中垃圾回收的工作原理,详细分析了标记-清除、复制算法、标记-压缩及分代收集等主流垃圾回收算法的特点和适用场景。通过实际案例,展示了不同GC(Garbage Collector)算法在应用中的表现差异,并针对大型应用提出了一系列优化策略,包括选择合适的GC算法、调整堆内存大小、并行与并发GC调优等,旨在帮助开发者更好地理解和优化Java应用的性能。 ####
110 0
|
4月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
4月前
|
存储 监控 算法
Java虚拟机(JVM)垃圾回收机制深度解析与优化策略####
本文旨在深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法及参数调优方法。通过剖析垃圾回收的生命周期、内存区域划分以及GC日志分析,为开发者提供一套实用的JVM垃圾回收优化指南,助力提升Java应用的性能与稳定性。 ####
|
5月前
|
机器学习/深度学习 监控 算法
Java虚拟机(JVM)的垃圾回收机制深度剖析####
本文深入探讨Java虚拟机(JVM)的垃圾回收机制,揭示其工作原理、常见算法、性能调优策略及未来趋势。通过实例解析,为开发者提供优化Java应用性能的思路与方法。 ####
108 1
|
5月前
|
监控 Java 开发者
Java虚拟机(JVM)深度优化指南####
本文深入探讨了Java虚拟机(JVM)的工作原理及其性能优化策略,旨在帮助开发者通过理解JVM的内部机制来提升Java应用的运行效率。不同于传统的技术教程,本文采用案例分析与实战技巧相结合的方式,为读者揭示JVM调优的艺术。 ####
149 8
|
6月前
|
存储 Dart Java
Dart 虚拟机运行原理
【10月更文挑战第20天】Dart 虚拟机通过一系列复杂的机制和操作,确保 Dart 代码能够准确、高效地执行。它为 Dart 语言的广泛应用提供了坚实的基础和可靠的运行环境
117 6
|
5月前
|
监控 算法 Java
深入理解Java虚拟机(JVM)的垃圾回收机制
【10月更文挑战第21天】 本文将带你深入了解Java虚拟机(JVM)的垃圾回收机制,包括它的工作原理、常见的垃圾收集算法以及如何优化JVM垃圾回收性能。通过本文,你将对JVM垃圾回收有一个全新的认识,并学会如何在实际开发中进行有效的调优。
134 0
|
10月前
|
监控 Java 调度
探秘Java虚拟机(JVM)性能调优:技术要点与实战策略
【6月更文挑战第30天】**探索JVM性能调优:**关注堆内存配置(Xms, Xmx, XX:NewRatio, XX:SurvivorRatio),选择适合的垃圾收集器(如Parallel, CMS, G1),利用jstat, jmap等工具诊断,解决Full GC问题,实战中结合MAT分析内存泄露。调优是平衡内存占用、延迟和吞吐量的艺术,借助VisualVM等工具提升系统在高负载下的稳定性与效率。
141 1

热门文章

最新文章

下一篇
oss创建bucket