news 2026/11/1 8:15:44

JAVA虚拟机-JVM

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA虚拟机-JVM

了解类加载的完整过程吗?

  • 类加载过程可以分为加载、链接和初始化三个阶段,其中链接阶段可以划分为验证、准备和解析三个子阶段。
  1. 在加载阶段,类加载器负责查找类的字节码文件并将其加载到内存中。
  2. 链接(Linking) 包含三个子阶段:验证、准备、解析
    • 验证(Verification):在验证阶段,会确保加载的类文件格式正确,并且不包含不安全的构造。
    • 准备(Preparation):在准备阶段,在内存中为类的静态变量分配内存空间,并设置默认初始值。
    • 解析(Resolution):在解析阶段,会将类、接口、字段和方法的符号引用解析为直接引用,也就是内存地址。
  3. 在初始化阶段,执行类的静态初始化代码,包括静态字段的赋值和静态代码块的执行。静态初始化在类的首次使用时进行,可以是创建实例、访问静态字段或调用静态方法。

类初始化时,静态代码块、静态常量、复合函数的执行顺序是什么?

  1. final static作为编译期常量在编译时会被存入调用类的常量池,类加载阶段中的链接阶段进行内存分配与赋值;
  2. 静态变量的赋值和静态代码块则是在初始化阶段执行,二者的执行顺序是代码编写的先后顺序;
  3. 复合函数(静态方法)属于方法调用,静态方法不会在类初始化阶段自动执行,如果静态变量通过调用静态方法赋值,此时方法会随变量赋值执行。

请讲解JVM的内存结构?

  1. JVM内存结构(运行时数据区)可以分为Java虚拟机栈、堆、方法区、本地方法栈和程序计数器五个部分。在JDK8之前,方法区通过永久代实现,JDK8及以后,永久代被元空间取代。
  2. 其中堆和方法区是线程共享的,虚拟机栈、程序计数器和本地方法栈是线程私有的。
  3. Java虚拟机栈存储方法执行时的栈帧,用来存储局部变量、操作数栈动态链接和返回地址,每个线程的虚拟机栈生命周期和线程相同;堆存放对象的实例和数组,是垃圾回收的主要区域;本地方法栈登记本地方法,管理本地方法的调用;程序计数器记录当前线程执行的字节码指令地址;方法区保存已经被加载的类信息、静态变量和即时编译后的代码等数据,关闭JVM后释放。

常见的垃圾回收器有哪些?

  1. Serial:新生代单线程收集器,使用复制算法,简单高效
  2. Serial Old:老年代单线程收集器,使用标记-整理算法
  3. ParNew:新生代并行收集器,使用复制算法,在多核CPU环境下比Serial好
  4. Parallel Scavenge收集器:新生代并行收集器,使用复制算法,追求高吞吐量。
  5. Parallel Old收集器:老年代并行收集器,使用标记-整理算法,吞吐量优先。
  6. CMS(Concurrent Mark Sweep) 收集器:老年代并行收集器,使用标记-清除算法,以获取最短回收停顿时间为目标的收集器,具有高并发、低停顿的特点,追求最短GC回收停顿时间。
  7. G1收集器:Java堆并行收集器,使用标记-整理算法,不会产生内存碎片。

了解JVM的相关参数吗?请举例说明。

JVM参数为JVM运行提供配置依据,可以对内存分配、垃圾回收、日志等方面进行配置,为不同的业务场景选择合适的参数。

  1. 进行内存配置时可以使用-Xms和-Xmx设置堆内存的初始值和最大值;-Xmn设置新生代大小,-XX:NewRatio设置老年代与新年代比例;
  2. 进行垃圾回收时可以使用-XX:+UseParallelGC、-XX:+UseConcMarkSweepGC、-XX:+UseG1GC等参数进行垃圾回收器的选择。
  3. 关于日志可以使用-XX:PrintGCDetails打印GC详细信息,使用-XX:PrintGCDateStamps打印GC日期和时间,还可以使用-Xloggc:/path/to/gc-%t.log打印GC日志到指定文件。%t表示当前时间。
  4. JVM参数也可以处理OOM异常,使用-XX:+HeapDumpOnOutOfMemoryError可以在OOM时自动生成堆快照,使用-XX:HeapDumpPath=/path/to/heapdump.hprof可以指定堆快照文件路径。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/24 16:51:06

vue+springboot人工智能AI问答时代个人计算机的安全防护科普系统

目录技术架构设计核心功能实现安全防护专项部署方案效能优化开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术架构设计 前端采用Vue3TypeScript构建响应式界面,使用Element Plus组件库实现科普内容展示与交互后端…

作者头像 李华
网站建设 2026/10/31 3:45:06

vue+springboot基于ai技术的学习资料分享平台

目录技术栈选择与概述核心功能模块设计AI技术实现细节前后端交互规范性能优化策略安全防护措施测试与部署方案扩展性设计开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术栈选择与概述 前端框架:Vue 3&#xff0…

作者头像 李华
网站建设 2026/11/1 4:28:56

vue+springboot甜点蛋糕商城系统 团子烘焙销售服务系统

目录技术架构设计前端实现(Vue.js)后端实现(Spring Boot)数据库设计部署与运维扩展功能性能与安全优化开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术架构设计 前后端分离架…

作者头像 李华
网站建设 2026/10/31 2:34:10

《时间简史》深度读书笔记(系统整合扩展版)

《时间简史》深度读书笔记(系统整合扩展版) 作者:史蒂芬霍金 英文原名:A Brief History of Time 出版时间:1988年一、写作背景与时代意义 20世纪是人类物理学发生剧烈革命的世纪。 在短短一百年内,人类完成…

作者头像 李华
网站建设 2026/10/24 16:07:11

vue+springboot校园学生健康监测数据管理系统的设计与实现

目录系统架构设计前端技术栈后端技术栈数据库设计核心功能实现安全防护措施性能优化方案测试与部署开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统架构设计 采用前后端分离架构,Vue.js 3.x作为前端框架&#x…

作者头像 李华
网站建设 2026/10/24 20:56:53

vue+springboot校园活动报名系统 场地预约系统

目录技术选型与架构设计核心功能模块设计关键技术实现性能优化策略测试与部署扩展方向开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术选型与架构设计 前端框架:Vue 3 TypeScript Element UI/Pinia后端框架&a…

作者头像 李华