清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官

jvm学习路线图 jvm学习路线图,可以供初步想学习的同学了解学习。。。 立即下载

JVM知识点梳理

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

JVM 组成部分

如上面的架构图所示,JVM分为三个主要子系统:

  1. Class Loader子系统
  2. 运行时数据区
  3. 执行引擎

ClassLoader子系统

Java的动态类加载功能由ClassLoader子系统处理。它加载,链接。并在运行时(而非编译时)首次引用类似初始化类文件。

加载

类将由此组件加载。BootStrap ClassLoader,扩展ClassLoader和Application ClassLoader是有助于实现该目标的三个ClassLoader。

  1. BootStrap ClassLoader :负责从引导类路径中加载类,仅用于rt.jar。最高优先级将给予此加载程序。
  2. 扩展ClassLoader :负责加载ext文件夹(jre \ lib)内的类。
  3. Application ClassLoader :负责加载应用程序级别的类路径,提到的环境变量路径等。

连结

  1. 验证:字节码验证程序将验证生成的字节码是否正确,如果验证失败,我们将收到验证错误。
  2. 准备:将为所有静态变量分配内存并为其分配默认值。
  3. 解决:将所有符号内存引用替换为“方法区域”中的原始引用。

初始化

这是ClassLoading的最后阶段;在此,所有静态变量将被分配原始值,并且将执行静态块。

运行时数据区

运行时数据区分为五个主要部分:

1、方法区域 :所有类级别的数据(包括静态变量)都将存储在此处。每个JVM只有一个方法区域,它是共享资源。

2、堆区 :所有对象及其对应的实例变量和数组将存储在此处。每个JVM还有一个堆区。由于“方法”和“堆”区域共享多个线程的内存,因此存储的数据不是线程安全的。

3、堆栈区 :对于每个线程,将创建一个单独的运行时堆栈。对于每个方法调用,将在堆栈存储器中创建一个条目,称为堆栈帧。所有局部变量都将在堆栈存储器中创建。堆栈区域不是共享资源,因此是线程安全的。堆栈框架分为三个子实体:

  • 局部变量数组——与该方法有关,涉及多少局部变量,并且相应的值将存储在此处。
  • 操作数堆栈——如果需要执行任何中间操作,则操作数堆栈充当执行该操作的运行时工作区。
  • 帧数据——与该方法相对应的所有符号都存储在此处。在任何例外情况下,捕获块信息将保留在帧数据中。

4、PC寄存器 :每个线程将具有单独的PC寄存器,以在执行指令后保存当前执行指令的地址,PC寄存器将用下一条指令进行更新。

5、本机方法堆栈 :本机方法堆栈保存本机方法信息。对于每个线程,将创建一个单独的本机方法堆栈。

执行引擎

分配给运行时数据区的字节码将由执行引擎执行。执行引擎读取字节码并逐段执行。

1、解释器:解释器解释字节码的速度较快,但执行速度较慢。解释器的缺点是,当多次调用一种方法时,每次都需要新的解释。

2、JIT编译器:JIT编译器消除了解释器的缺点。执行引擎将使用解释器的帮助来转换字节码,但是当发现重复的代码时,它将使用JIT编译器,该编译器将编译整个字节码并将其更改为本地代码。此本地代码将直接用于重复的方法调用,从而提高系统的性能。

  • 中间代码生成器——产生中间代码
  • 代码优化器——负责优化上面生成的中间代码
  • 目标代码生成器——负责生成机器代码或本机代码
  • Profiler——一个特殊的组件,负责查找热点,即是否多次调用该方法。

3、垃圾收集器:收集并删除未引用的对象。垃圾回收可以通过调用触发System.gc(),但不能保证执行。JVM的垃圾收集收集创建的对象。

相信看到这里,大家对多线程应该有了基本的认识,那接下来咱们一起来看相应的学习路线。

JVM学习路线

是不是感觉比较繁琐?不用担心,在这里小编早已经将清华大佬的学习秘籍帮大家整理好了,为了不影响大家的阅读体验,小编只是展示了一部分细节

第1章:Java虚拟机概述

本章简单介绍了Java语言产生的历史背景。Java语言所要解决的是如何能够不关注底层技术细节就能实现兼容性,詹爷给出的答案是使用中间语言,通过中间语言来实现跨平台兼容的目标。

章节简介

  • 从机器语言到Java——詹爷, 你好
  • 兼容的选择:一场生产力的革命
  • 中间语言翻译
  • 常见汇编指令
  • JVM指令

     


第2章:Java执行引擎工作原理:方法调用

本章主要讲解了JVM内部的call stub 例程的定义和调用机制,但是并没有一开始便直入主题,主要是考虑到技术的难度太大,很多人理解不了。因此作者只能用心良苦地****设计****了很多C和汇编程序,从物理机器执行函数调用的机制开始讲起,为大家揭开物理机器在调用函数时设计的若干细节。

章节简介

  • 方法调用
  • 真实的机器调用
  • C语言函数调用
  • JVM的函数调用机制
  • 函数指针
  • CallStub函数指针定义
  • call stub_ _entry 例程


第3章:Java数据结构与面向对象

从程序的角度看,数据结构是若干数据的有机结合,一个数组、一个链表、一个堆栈都是数据集,这些数据在内存位置上有着紧密的联系,例如,对于数组而言,相邻的两个元素在内存位置上也是彼此相邻的;而对于链表,内存空间上未必彼此相连,但是相邻的两个元素中必定有一个元素保存着一个指针指向另一个元素的内存位置。而从人类的角度看,一个特定的数据结构可以更好地描述客观世界,例如通过一个Java类可以描述一只猫、一个手机,而通过类的组合则可以描述几乎任意复杂的事物。这便是数据结构的意义所在。

章节简介

  • 从Java算法到数据结构
  • 数据类型简史
  • Java数据结构之偶然性
  • Java类型识别
  • 大端和小端的概念
  • 大小端产生的本质原因
  • 大小端验证
  • 大端和小端产生的场景
  • 如何解决字节序反转
  • 大小端问题的避免
  • JVM对字节码文件的大小端处理

     


第4章:Java字节码实战

本章以一个具体的Java程序为例,分析了其对应的字节码文件中的数据。可以发现,Java编译器在生成Javaclass字节码文件时,全是按套路出牌的,那么我们在分析时也按照套路走,便不难理解字节码文件的内容。

字节码文件中最重要的是Java方法所对应的字节码指令( 至少笔者这么认为), Java 源程序的逻辑都封装在字节码指令中。对字节码指令在字节码文件中的存储方式有了透彻的理解,便意味着你对JVM执行引擎入门了。

章节简介

  • 字节码格式初探
  • 魔数与版本
  • 常量池的基本结构
  • JVM所定义的11种常量
  • 常量池元素的复合结构
  • 常量池的结束位置
  • 访问标识与继承信息
  • 字段信息
  • 方法信息

     


第5章:常量池解析

本章详细分析了解析Java字节码常量池的原理,描述了JVM内部常量池对象的内存分配机制,并由此阐述了JVM内部的对象表示机制——oop-klass 模型。想要研究JVM内核的道友应当认真阅读本章,最好能够非常熟悉常量池的内存分配机制,因为后续章节会讲解Java字段、方法的内存分配机制,而Java字段和方法的内存分配机制基本与常量池的内存分配机制类似,因此对常量池的内存分配机制理解得越透彻,则后续理解其他对象的内存分配机制便会越轻松。

章节简介

  • 常量池内存分配总体链路.
  • 内存分配
  • 初始化内存
  • oop-klass模型
  • 常量池klass模型(1)
  • 常量池klass模型(2)
  • constantPoolOop域
  • 初始化tag
  • 解析常量池元素

     


第6章:类变量解析

总体而言,HotSpot 解析Java类变量的脉络比较清晰,但是也可以看出花了很多心思,这导致JVM虽然在执行引擎上相比于那些直接编译成本地机器码的编程语言可能要稍逊一筹, 但是在对象的内存分配上,并不比这些编程语言多浪费一点空间(除了每个Java类对象必须保留一个对象头),甚至由于字段重排的优化策略,对内存的利用率还要高于这些编程语言的编译器的分配算法。

章节简介

  • 类变量解析
  • 静态变量偏移量
  • 非静态变量偏移量
  • Java字段内存分配总结
  • 字段重排与补白
  • private字段可被继承吗
  • 使用HSDB验证字段分配与继承
  • 引用类型变量内存分配

     


第7章:Java栈帧

本章全面分析了Java方法栈帧创建的过程,机器指令几乎是逐个讲解的。然而,笔者在阅读JVM的这部分机制指令的过程中,不仅仅停留于分析机器指令本身的含义,还进行了更深入的思考,仔细推敲了每一条机器指令的背景,为何要这么实现,如果不这么实现有没有问题,相信真正有耐心读下来并且能够读懂的道友能够体会笔者的这种深人思考!

章节简介

  • entry_ point 例程生成
  • constMethod的内存布局
  • 局部变量表空间计算
  • 初始化局部变量区
  • 栈帧是什么
  • 硬件对堆栈的支持
  • 栈帧开辟与回收
  • 堆栈大小与多线程
  • JVM栈帧与大小确定
  • 栈帧创建
  • 局部变量表
  • 栈帧深度与slot复用
  • 最大操作数栈与操作栈复用

     


第8章:类方法解析

本章主要描述了Java方法解析的技术实现。相比于前面章节所讲解的Java类字段的解析,Java类方法解析明显要复杂得多。这种复杂性体现在Java方法属性本身拥有众多信息,尤其是字节码指令部分。除了字节码指令,还有LVT、miranda 方法等,存储格式比较复杂,并且概念理解起来也并不是一-件轻松的事情。JVM为Java方法在内存中所构建的对等体也明显更加复杂。

同时,Java方法的解析还承担了一部分实现面向对象机制的责任,其核心技术便是vtable。只有真正理解了vtable 的实现机制,才能真正理解Java面向对象与多重继承的原理。

章节简介

  • 方法签名解析与校验
  • code属性解析.
  • LVT&LVTT
  • 创建methodOop
  • Java方法属性复制
  • <clinit>与<init>
  • 查看运行时字节码指令
  • C++中的多态与vtable
  • Java中的多态实现机制
  • vtable特点总结
  • vtable机制逻辑验证

     


第9章:执行引擎

JVM最核心的技术便是执行引擎,最难的也是执行引擎。要想透彻理解JVM的执行引擎,就必须先理解物理计算机CPU执行运算的机制。本书详细描述了物理CPU进行取值、译码、运算的原理,并从这个点出发,逐步深入讲解JVM的执行引擎的运行机制。

章节简介

  • 执行引擎概述
  • 指令长度..
  • JVM的两级取值机制
  • 取指指令放在哪
  • 程序计数器在哪里
  • 译码
  • 栈顶缓存
  • 栈式指令集
  • 操作数栈在哪里.
  • 栈帧重叠
  • entry_ point 例程机器指令
  • 执行引擎实战
  • 字节码指令实现

     


第10章:类的生命周期

类的加载机制与生命周期等概念,在各种书籍与各种网络博客里随处可见,然而对于一个想要真正了解其内部实现的人而言,那些都涉人过浅。本章“拨云见日”,从JVM源码的角度,还原出Java类加载的真实机制,以及类生命周期的实现方式。

章节简介

  • 类的生命周期概述
  • 类加载——镜像类与静态字段
  • Java主类加载机制
  • 类加载器的加载机制
  • 反射加载机制
  • import与new指令
  • 类加载器的定义
  • 系统类加载器与扩展类加载器创建
  • 双亲委派机制与破坏
  • 父加载器
  • 预加载
  • 引导类加载
  • 栈.上分配与逃逸分析
  • TLAB
  • 指针碰撞与eden区分配
  • 清零
  • 偏向锁
  • 压栈与取指

     


JVM涉及的知识面十分广阔,因此限于篇幅,本篇并未覆盖JVM的全部内容。总体而言,本篇重点描述了JVM从启动开始到完成函数执行的详细机制,读完本篇,相信你一定能够明白JVM执行Java程序的底层机制,能够明白JVM将Java语言一步步转换为CPU可执行的机器码的内部机制,以及为此而制定的各种规范的实现之道,例如oop-klass 模型、堆栈分配模型、类加载模型等。

实战是检验自己成果的重要方式

所谓实战,并不是让大家空造项目,在这里小编整理了2020最新阿里面试真题,如果换做是你,你又能和面试官过上几个回合呢?

  1. JDK、 JRE、JVM 的关系是什么?
  2. JVM 的内存模型以及分区情况和作用
  3. JVM 对象创建步骤流程是什么?
  4. 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?
  5. 类的加载过程是什么?简单描述一下每个步骤
  6. JVM 预定义的类加载器有哪几种?分别什么作用?
  7. 什么是双亲委派模式?有什么作用?
  8. 介绍一下 JVM 中垃圾收集器有哪些? 他们特点分别是什么?
  9. 什么是 Class 文件? Class 文件主要的信息结构有哪些?
  10. 对象“对象已死” 是什么概念?
  11. Java 语言怎么实现跨平台的?
  12. 详细介绍一下对象在分带内存区域的分配过程?
  13. G1 与 CMS 两个垃圾收集器的对比
  14. 线上常用的 JVM 参数有哪些?
  15. 对象什么时候进入老年代?
  16. 什么是内存溢出, 内存泄露? 他们的区别是什么?
  17. 引起类加载操作的行为有哪些?
  18. 介绍一下 JVM 提供的常用工具
  19. 什么情况下会出现栈溢出
  20. 说一下强引用、软引用、弱引用、虚引用以及他们之间和 gc 的关系

如果是你,你能达到什么程度?


后记

学习是一个漫长的过程,只有耐得住寂寞,才能收获到成功的甘醇!!!

MaxScript批量修改材质、贴图名称 MaxScript批量修改材质、贴图名称1 实现效果1.1 修改前材质、贴图名称1.2 修改后2 代码 1 实现效果 1.1 修改前材质、贴图名称 1.2 修改后 2 代码 prefixName = "prefiname" maxFile = "maxfilepath" makeDir "newBitmappath" mapsPath = newbitmappath + "\\" fn formatStr index = ( str = index as string newS 阅读详情

相关推荐

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)

本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。

weixin_30335575的博客 536

JVM入门到精通详解

由于 Java 虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,我们称这类内存区域为「线程私有」的内存。该缓存行只被缓存在该CPU的缓存中,并且是被修改过的(dirty),即与主存中的数据不一致,该缓存行中的内存需要在未来的某个时间点(允许其它CPU读取请主存中相应内存之前)写回(write back)主存。

weixin_43875870的博客 731

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 344

【JVM JMM】Java虚拟机 Java内存学习入门篇

Java虚拟机 JVM学习 一、什么是JVM 1.定义 Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境) JVM 是 Java 的核心和基础,在 Java 编译器和 os 平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行 Java 的字节码程序。 Java 编译器只需面向 JVM,生成 JVM 能理解的代码或字节码文件。Java 源文件经编译器,编译成字节码程序,通过 JVM 将每一条指令翻译成不同

Sun_study的博客 721

qcom bypass node介绍

介绍qcom bypass node,以及如何让其生效

haodada1226的博客 2043

从配置文件加载顺序揭秘:为什么你的logback.xml读不到application.yml?

本文深入解析了Spring Boot中logback.xml无法读取application.yml配置的原因,揭示了Spring Boot配置加载机制与日志系统初始化的时序问题。通过对比logback.xml与logback-spring.xml的差异,提供了使用springProperty标签和系统属性传递等解决方案,帮助开发者有效解决日志配置问题。

weixin_29214335的博客 364

认识JVM和学习路线

JVM是什么?学习的路线推荐

qq_42390636的博客 487

LVDS系列23:Xilinx Ultrascale系ISERDESE3原语(一)

当FIFO_RD_CLK与CLKDIV对齐时,也就是Latency With Late FIFO Empty情况时,延迟比前一种情况长一个FIFO_RD_CLK时钟周期,也就是在FIFO_RD_CLK上升沿后一点,CLKDIV才成功驱动完FIFO_EMPTY的变化,于是读侧要得到FIFO_EMPTY为0的情况则要等到下一个FIFO_RD_CLK的上升沿采集时;IS_CLK_INVERTED、IS_CLK_B_INVERTED设置CLK和CLK_B是否反转,一般情况下设置0;

weixin_38828382的博客 900

jvm学习路线(简洁明了)

以上是博主学习jvm的一些整理,如有理解不对的地方,欢迎各位大佬留言指正。先对jvm有了一个大致了解后,在看一下如何学习jvm。

m0_67401134的博客 310

一人公司 CEO × Accio Work:最大能效实战指南

作为一人公司 CEO,你需要同时扮演市场、销售、运营、财务、产品等多个角色。Accio Work 本质上就是你的。

华盛AI的博客 2100

UE 动态获取 资源缩略图 下载到本地或返回图片信息

UE 动态加载资源缩略图 返回图片信息或保存到本地

qq_46080252的博客 1937

JVM的学习

一、什么是虚拟机 平时我们使用的电脑主机、服务器,都是传统意义上的物理机,通过具体的CPU,内存等硬件实现。 虚拟机的定义:“虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。" 虚拟机分为系统虚拟机和程序虚拟机。 系统虚拟机是对物理机的仿真,它可以提供一个可运行完整操作系统的软件平台。例如常用的VMWare,我们在使用VM创建一个linux系统时,常常要我们为系统分配内存,CPU。由此可见系统虚拟...............

weixin_49590617的博客 1015

Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)

在第一个脉冲期间,天线 1 通过天线 N-1 接收的杂波返回与第二个脉冲期间天线 2 通过天线 N 接收的杂波返回相同。该算法可能需要搜索角度和多普勒的所有组合来定位目标,但对于示例,由于确切知道目标的位置,因此可以将处理器定向到该点。然而,接收到的信号不仅包含来自目标的反射回波,还包含来自被照亮地表的回波。然而,由于干扰器的白噪声性质,接收到的干扰信号占据了整个多普勒频段。在以下部分中,您将模拟来自目标、杂波和干扰器的返回,并说明 STAP 技术如何过滤来自接收信号的干扰。假设元件间距是波形波长的一半。

珞瑜的博客 7135

清华大佬力荐的JVM学习路线+实战笔记+阿里真题,嚼碎吃透吊打面试官

JVM知识点梳理 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行

Java_msb666的博客 1403

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

清华大老力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

jjc4261的博客 141

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

JVM基础和常见面试题

JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要JVM进行一番转换。从下图中可以看到,有了JVM这个抽象层之后,Java就可以实现跨平台了。JVM只需要保证能够正确执行.class文件,就可以运行在诸如Linux、Windows、MacOS等平台上了。

皓亮君的博客 3061

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

一.从零开始JVM实战高手

目前市面上已有太多的JVM相关教程和书籍,但是大部分偏理论,比较枯燥难懂,少有结合实际业务开发,站在项目开发的视角下去分析和讲解相关经验的教程;而本套教程会从零开始带着大家一步一步深入了解JVM底层原理,以及结合一些开发中的典型生产环境问题来进行实战剖析,并且几乎采用一步一图的方式进行讲解。通过核心理论和实战案例的结合,希望能对大家对JVM的理解和应用更上一层楼。

墨家巨子@俏如来 2460

jvm知识学习路线

jvm知识学习路线

DKPT的博客 537

JVM 全面深入学习路径

JVM深入学习路径摘要 本学习路径系统化覆盖JVM核心技术,分为五大部分: 基础架构:详解JVM内存模型、类加载机制和执行引擎 内存管理:深入垃圾回收算法、收集器实现和调优实战 字节码技术:解析类文件结构、指令集和动态代理原理 性能调优:掌握监控工具使用、参数配置和锁优化策略 高级主题:探讨JIT编译、逃逸分析及ZGC等前沿技术 学习路线从底层原理延伸到生产实践,包含丰富案例分析,适合希望深入理解Java虚拟机核心机制的中高级开发者。

weixin_39956506的博客 767

2024最新最全【JVM进阶】教程,零基础入门到精通

from区的对象如果继续存活,且能够被另一块幸存区to区容纳,则使用复制算法将这些仍然存活的的对象复制到另一块幸存区to区中,然后清理使用过的Eden和from区(下一次分配就从to区开始,to区成为下一次GC的from区),且这些对象的年龄设置为1,以后对象在幸存区每经历一次Minor GC,对象的年龄就会+1,当对象的年龄到达某个阈值的时候,这些对象就会进入老年代。Java刚开始的时候底层是用c实现的,后面逐渐演变为新语言Java后,仍然保留了一些c里面的方法,而本地方法区就是用来存这些方法的。

资深程序员,曾自学JAVA,C#,如今从业于网安行业 1208

JVM—学习路线

目录 1、JVM简介 3、JVM加载class文件的原理机制 1)Class Loader类加载器 类加载器的作用是加载类文件到内存,比如编写一个HelloWord.java程序,然后通过javac编译成class文件,那怎么才能加载到内存中被执行呢?Class Loader承担的就是这个责任,那不可能随便建立一个.class文件就能被加载的,Class Loader加载的class文件是有格式要求,在《JVM Specification》中式这样定义Class文件的...

sanmi8276的博客 410

Jvm学习路线

今天的博客主题 Java虚拟机——》Jvm学习路线 灵魂三连问 JVM是什么? JVM 是 Java Virtual Machine(Java虚拟机)的缩写。 Java虚拟机是Java平台的基石。 它是硬件和操作系统独立性、编译代码的小尺寸以及保护用户免受恶意程序攻击的技术组成部分。 Java虚拟机是一个抽象的计算机器。像真正的计算机一样,它有一个指令集,并在运行时操作各种内存区域。 Java虚拟机对Java编程语言一无所知,只知道一种特殊的二进制格式,即类文件格式。 类......

刘总Java 450

【JVM学习路线】详解

Java虚拟机(JVM)是Java编程语言的核心组件之一,负责执行Java字节码,提供运行时环境,并处理如垃圾回收、线程管理和内存分配等关键任务。深入理解JVM对于优化Java应用程序的性能至关重要。

kiingking的博客 739

如何才能学好JVM?——零基础入门篇

JVM的学习是一个长期而有趣的过程,希望你能保持好奇心和实践精神,不断探索,不断学习。

BASK2311的博客 1501

JVM基础学习指南

JVM面试指南

个人技术博客 490

Java学习路线(超详细)

Java中的网络编程技术非常广泛应用,在学习Java网络编程时,你需要了解Java中的Socket、HTTP协议、TCP/IP协议和UDP协议等内容,以便实现网络通信。在学习Java基础知识时,你需要了解Java的语法、变量和数据类型、控制结构、数组、字符串和输入/输出操作等基础知识。在学习面向对象编程时,你还需要了解Java中的抽象类和接口、内部类、枚举等概念,这些都是面向对象编程的重要组成部分。学习Java异常处理,你需要了解Java中的异常分类、异常的捕获和处理等内容,以确保程序的健壮性和可靠性。

桑稚远方的博客 7859
上一篇: 易学易爆炸!阿里P8耗时90天,为你分析分布式系统技术和实战笔记
下一篇: 凭借清华大佬的路线指引,从JVM调优到算法,吊打阿里面试官
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值