首页 > 其他分享 >认识JVM

认识JVM

时间:2024-11-27 12:30:40浏览次数:5  
标签:Java 字节 认识 机器码 -- 内存 JVM

摘要

本文主要介绍JVM(Java虚拟机)的功能(解释运行、内存管理、即时编译(JIT))和JVM的组成


文章目录


Java程序的执行

.Java文件 --》JavaC编译 --》.class文件(字节码文件) --》 JVM进行实时解释翻译 --》机器码执行

.c文件 --》直接编译为(exe可执行文件)机器码运行

早期Java为了实现垮平台的特性,引入了JVM来兼容不同的操作系统平台,也因JVM的实时解析字节码文件比较耗时,导致了Java程序执行性能相较C/C++语言于弱势。


一、三大功能

解释运行:对字节码的指令实时解释为机器码来运行

即时编译(JIT):将字节码文件中的热点指令解释后的机器码存储在内存中,当热点指令执行时可直接从内存中调用执行,提高程序运行性能,达到接近C/C++的程序性能。Just in time

内存管理:自动为对象/方法分配内存,自动对不再使用的对象进行垃圾回收,释放内存。

二、主流的JVM

”常见的jvm有HotSpot、GraalvM、Openj9等,另外Dragon Well龙井jdk也
提供了一款功能增强版的jvm。其中使用最广泛的是HotSpot虚拟机“
JVM

三、JVM的组成

首先.class文件中的类和接口数据会在ClassLoader中进行存储,然后执行引擎会对字节码文件中的命令进行解释生成机器码给机器执行,过程中生成的对象存放在运行时内存中且会利用即时编译器对热点代码进行优化,通过垃圾回收工具对无用对象进行回收,过程中可能还会调用虚拟机中的一些已经编译的本地方法。
在这里插入图片描述

标签:Java,字节,认识,机器码,--,内存,JVM
From: https://blog.csdn.net/nobestnobest/article/details/144012532

相关文章

  • spring boot项目,jvm基础配置
    服务器启动文件startup.sh`#!/bin/shcheckJAVA_HOME&javanoJavaHome=falseecho$noJavaHomeif[-z"$JAVA_HOME"];thennoJavaHome=truefiif[!-e"$JAVA_HOME/bin/java"];thennoJavaHome=truefiCURR_DIR=pwdcddirname"$0&quo......
  • 从零开始理解JVM:对象的生命周期之对象创建
    一、对象创建从你new一个对象开始,发生了什么?遇到new指令,jvm首先要做的事是检查有没有这个类,没有的话,加载它!接下来,就要进行实例的内存分配,通过什么样的方式进行内存分配呢?1、内存分配方式指针碰撞这种分配前提是内存中有整片连续的空间,用的在一边,空闲的在另一边,用一个指针......
  • java JVM的深入理解
    javaJVM的理解:编译--》运行(利用虚拟机【解释器】解释执行class字节码文件1.JVM的位置:JVM存在JRE里,是java的运行环境;2.JVM的体系结构java--》.class--》类装载器--》运行时数据区(方法区,Java栈,本地方法区navtivemethod堆,程序计算器)--》执行引擎3.类加载器:加载class文件,启动......
  • 边双连通分量+点双连通分量(初步认识)
    边双连通分量定义边双连通:若无向图中点x和y在删除任意连边后,仍然连通称x和y是边双连通的。边双连通分量:若无向图G中,存在一个极大子图E,E中没有割边,那么E是G的一个边双连通分量,记为E-DCC。使用场景将无向图转为一棵树如何找边双连通分量先确定割边dfs遍历所有的点,且......
  • 高级java每日一道面试题-2024年11月23日-JVM篇-什么时候会出发FullGC?
    如果有遗漏,评论区告诉我进行补充面试官:什么时候会出发FullGC?我回答:在Java高级面试中,FullGC(全局垃圾回收)是一个重要的考点。FullGC是一种垃圾回收机制,用于回收整个堆内存中的所有的未使用的对象,包括年轻代(新生代)、老年代和永久代(元空间,Java8及以后)中的对象。Full......
  • 高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
    如果有遗漏,评论区告诉我进行补充面试官:说说对象分配规则?我回答:在Java高级面试中,对象分配规则是一个核心考点,它涉及到JVM的内存管理、对象的创建和初始化等多个方面。以下是对Java对象分配规则的详细解释:一、内存分配区域Java中的对象主要在堆(Heap)和栈(Stack)中分配......
  • JVM常见面试题(四):垃圾回收
    文章目录前言堆区域划分GC分类空间分配担保查看JDK使用的垃圾回收器常见面试题一、对象什么时候可以被垃圾器回收1.1对象何时被垃圾器回收1.2如何定位垃圾/判断对象是否死亡1.2.1引用计数法1.2.2可达性分析算法1.3如何判断一个常量是废弃常量1.4如......
  • jvm入门
    jvm入门一:jvm的介绍定义jvm的全称是Javavirtualmachine(java虚拟机)-java的运行环境(java二进制字节码的运行环境)作用:1:wirteonce,runanywhere。一次编译可以在任意平台运行2:自动内存管理:垃圾回收机制3:数组下标越界检查(对比c)4:多太jvm,jre,jdk的关系:jdk包......
  • 高级java每日一道面试题-2024年11月22日-JVM篇-说说堆和栈的区别?
    如果有遗漏,评论区告诉我进行补充面试官:说说堆和栈的区别?我回答:在Java高级面试中,关于堆和栈的区别是一个常见的问题。堆和栈是JVM(Java虚拟机)内存模型中的两个重要部分,它们在程序执行过程中扮演着不同的角色。下面是对堆和栈的详细解释:堆(Heap)定义:堆是JVM中最......
  • JVM 性能调优 -- 线上应用 JVM 内存调优【实战】
    前言:上一篇我们分享了线上应用的JVM内存预估技巧,通过对JVM内存的预估来合理的选用服务器资源和应用部署方案,本篇我们来分享引用的JVM调优实例,如何通过JVM调优来降低应用的GC频率。JVM系列文章传送门初识JVM(Java虚拟机)深入理解JVM(Java虚拟机)一文搞懂JVM......