![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 93
“JVM虚拟机”专栏深入解析Java虚拟机(JVM)的工作原理、内存管理、垃圾回收和性能调优。通过实用的案例和最佳实践,帮助Java开发者优化应用性能,解决常见问题。无论您是新手还是资深工程师,本专栏都是提升JVM知识和技能的理想资源。
庄小焱
我是庄小焱,某大厂Java高级工程师、PMP项目管理专家、系统架构设计师(高级)、CSDN博文专家。 博主在支付领域,金融领域、订单履约领域不断学习,同时在博客中分享自己学习知识和相关技术, 欢迎大家和我交流学习,欢迎大家关注我的博客。
展开
-
JVM——JVM面试问题
现如今,在作为一个刚毕业和计算机专业的学生或者是一个工作了三到五年的后端java程序员,面试过程中JVM的问题也已经是必考,本博文主要分享JVM面试问题与答案。帮助大家快速的熟悉JVM的面试内容,同时给大家及时的整理好相关JVM面试问题与解答。帮助大家更好的应对JVM的面试问题。原创 2019-11-13 11:51:03 · 1163 阅读 · 3 评论 -
JVM——JVM知识脑图
摘要本博文主要分享JVM知识脑图,同时介绍博主关于JVM专栏链接。分享一些有关于JVM学习资料,帮助大家更好的学习和理解JVM的底层原理。同时给出一线大厂面试问题与答案供大家参考学习。一、JVM知识脑图1.1 JVM学习脑图1.2 JDK1.8下JVM内存结构原理1.3 JDK1.7下JVM内存结构原理1.4 JDK1.6下JVM内存结构原理二、JVM专栏知识介绍2.1 JVM 面试问题与解答2.2 JVM内存模型。原创 2021-04-20 10:56:57 · 398 阅读 · 0 评论 -
JVM——JVM基础知识
掌握好基础知识,学而时习之,经常使用各种工具并熟练运用,自然就能深入掌握一门技能。理论结合实践,掌握 JVM 相关知识,熟练各种工具的使用,是 Java 工程师职业进阶中不可或缺的。学就要学会理论,掌握实现原理。 理解了 Java 标准平台的 JVM,举一反三,稍微变通一下,碰到 Android 的 ART, Go 的虚拟机,以及各种语言的垃圾收集实现,都会很容易理解。原创 2021-11-29 09:49:26 · 876 阅读 · 0 评论 -
JVM——JVM内存结构
我们可以使用参数-Xss选项来设置线程的最大栈空间,栈的大小直接决定了函数调用的最大可达深度。方法区与Java堆一样, 是各个线程共享的内存区域, 它用于存储已被虚拟机加载的类信息、 常量、 静态变量、 即时编译器编译后的代码等数据。作用:主管java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分结果,并参与方法的调用和返回。由于跨平台性的设计,java的指令都是根据栈来设计的。在jvm规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。原创 2020-10-05 22:30:34 · 1039 阅读 · 0 评论 -
JVM——类加载器原理
写好的代码经过编译变成了字节码,并且可以打包成 Jar 文件。然后就可以让 JVM 去加载需要的字节码,变成持久代/元数据区上的 Class 对象,接着才会执行我们的程序逻辑。原创 2021-03-28 14:25:55 · 949 阅读 · 0 评论 -
JVM——JVM字节码原理
Java 中的字节码是 Java 代码编译后的中间代码格式。JVM 需要读取并解析字节码才能执行相应的任务。Java 字节码是 JVM 的指令集。JVM 加载字节码格式的 class 文件,校验之后通过 JIT 编译器转换为本地机器代码执行。简单说字节码就是我们编写的 Java 应用程序大厦的每一块砖,如果没有字节码的支撑,大家编写的代码也就没有了用武之地,无法运行。也可以说,Java 字节码就是 JVM 执行的指令格式。原创 2021-12-02 10:13:19 · 483 阅读 · 0 评论 -
JVM——执行引擎原理
虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。关于那些需要被编译为本地代码的字节码,也被称之为“热点代码”,JIT 编译器在运行时会针对那些频繁被调用的“热点代码”做出深度优化,将其直接编译为对应平台的本地机器指令,以此提升 Java 程序的执行性能。原创 2021-12-02 21:30:05 · 2508 阅读 · 0 评论 -
JVM——JVM对象创建原理
本博文主要介绍JVM对象实例原理原创 2021-12-02 20:59:53 · 244 阅读 · 0 评论 -
JVM——GC算法原理
本文将介绍JVM垃圾回收算法相关原理。垃圾收集机制是 Java 的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java 的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?原创 2021-03-18 15:29:36 · 908 阅读 · 0 评论 -
JVM——GC回收器原理
有的地方说“GC 暂停”,有的地方说“GC 停顿”,其实两者是一个意思,但为了表述的流畅,所以会使用不同的词语。更细致的辨别,可以认为暂停是业务线程的暂停,停顿是指应用程序层面的停顿。ZGC 即 Z Garbage Collector(Z 垃圾收集器,Z 有 Zero 的意思,主要作者是 Oracle 的 Per Liden),这是一款低停顿、高并发,基于小堆块(region)、不分代的增量压缩式垃圾收集器,平均 GC 耗时不到 2 毫秒,最坏情况下的暂停时间也不超过 10 毫秒。原创 2021-12-03 17:15:52 · 1260 阅读 · 2 评论 -
JVM——GC日志实战分析
博文将具体示例来演示如何输出 GC 日志,并对输出的日志信息进行解读分析,从中提取有用的信息。原创 2021-12-01 09:29:36 · 2733 阅读 · 2 评论 -
JVM——JDK调优工具
虽然功能比较单一, 但它是使用频率最高的JDK命令行工具, 因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。对于本地虚拟机进程来说, LVMID与操作系统的进程ID( Process Identifier,PID) 是一致的, 使用Windows的任务管理器或者UNIX的ps命令也可以查询到虚拟机进程的LVMID, 但如果同时启动了多个虚拟机进程, 无法根据进程名称定位时, 那就只能依赖jps命令显示主类的功能才能区分了。-gc:显示与 GC 相关的堆信息。原创 2021-03-18 15:39:17 · 859 阅读 · 0 评论 -
JVM——OOM问题与实战
摘要OOM,全称是"Out Of Memory",翻译成中文就是"内存用完了"。在JVM中产生OOM的问题主要是方法区和堆区,也有可能出现栈区和本地方法栈区。OOM分为虚拟内存OOM和物理内存OOM,两者是不一样的。虚拟内存OOM发生在用户空间,因为用户空间分配的就是虚拟内存,不能分配物理内存,程序在运行的时候触发缺页异常从而需要分配物理内存,内核自身在运行的时候也需要分配物理内存,如果此时物理内存不足了,就会发生物理内存OOM。原创 2021-11-29 15:00:44 · 702 阅读 · 0 评论 -
JVM——JVM调优方案
如果你的应用和用户没有什么交互,完全不需要关注用户体验,那么你的硬性标准就是不顾一切的提升吞吐量,达到程序性能的最优。为了验证自己的猜想,于是准备登录后台去测试下,结果在测试的过程中发现到处订单的按钮前端居然没有做点击后按钮置灰交互事件,结果按钮可以一直点,因为导出订单数据本来就非常慢,使用的人员可能发现点击后很久后页面都没反应,结果就一直点,结果就大量的请求进入到后台,堆内存产生了大量的订单对象和EXCEL对象,而且方法执行非常慢,导致这一段时间内这些对象都无法被回收,所以最终导致内存溢出。原创 2021-03-18 15:40:56 · 1407 阅读 · 0 评论 -
JVM——JVM生产环境下调优策略
摘要摘要大家在面试时候经常被问到的JVM调优相关问题,但是对于大部分初级程序员来说很难遇到JVM级别的调优。因此本文总结一下在生产换种涉及到JVM的优化的问题和优化的解决方案。一、JVM调优的背景。原创 2021-12-03 18:59:29 · 801 阅读 · 0 评论 -
JVM——生产环境调优场景
本文将介绍常见生产环境下JVM的调优的场景与解决方案。供大家在日常的工作中学习和参考。例如, 一个15万PV/天左右的在线文档类型网站最近更换了硬件系统, 新的硬件为4个CPU、 16GB物理内存, 操作系统为64位CentOS 5.4, Resin作为Web服务器。 整个服务器暂时没有部署别的应用, 所有硬件资源都可以提供给这访问量并不算太大的网站使用。 管理员为了尽量利用硬件资源选用了64位的JDK 1.5, 并通过-Xmx和-Xms参数将Java堆固定在12GB。使用一段时间后发现使用效果并不理想,原创 2021-03-18 15:39:33 · 481 阅读 · 0 评论 -
JVM——Java诊断工具Arthas
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。原创 2021-03-18 15:43:38 · 662 阅读 · 0 评论