05 2024 档案
JVM GC日志分析之日志参数
摘要:不同的垃圾收集器(参考JVM 垃圾收集器分类),输出的日志格式各不相同,但也有一些相同的特征。熟悉各个常用垃圾收集器的GC日志,是进行JVM调优的必备一步。 解析GC日志,首先需要收集日志(参考https://docs.oracle.com/en/java/javase/17/docs/specs/ 阅读全文
posted @ 2024-05-30 15:41 池塘里洗澡的鸭子 阅读(176) 评论(0) 推荐(0) 编辑
JVM 垃圾收集器分类
摘要:参考官网https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html。垃圾收集器可以分为以下四类: 1、Serial收集器 这个收集器是一个单线程工作的收集器, 但它的“单 阅读全文
posted @ 2024-05-29 13:26 池塘里洗澡的鸭子 阅读(32) 评论(0) 推荐(0) 编辑
JVM调优维护常用工具之VisualVM 可视化优化工具
摘要:VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于Java 技术的应用程序(Java 应用程序)的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JV 阅读全文
posted @ 2024-05-28 20:42 池塘里洗澡的鸭子 阅读(96) 评论(0) 推荐(0) 编辑
JVM调优维护常用工具之Jconsole 监控管理
摘要:Jconsole(Java Monitoring and Management Console)是JDK中自带的java监控和管理控制台,用于对JVM中内存、线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。 jconsole使用jvm的 阅读全文
posted @ 2024-05-28 16:20 池塘里洗澡的鸭子 阅读(87) 评论(0) 推荐(0) 编辑
JVM非运行时共享内存之直接内存
摘要:直接内存(Direct Memory) 并不是虚拟机运行时数据区的一部分。为何存在呢?观察下两图进行对比: 有没有似曾相识?!很多架构的设计都基于这种思想,提高性能和效率。NIO的Buffer提供一个可以直接访问系统物理内存的类——DirectBuffer。 普通的ByteBuffer仍在JVM堆上 阅读全文
posted @ 2024-05-15 15:35 池塘里洗澡的鸭子 阅读(9) 评论(0) 推荐(0) 编辑
JVM运行时内存管理之线程共享
摘要:接上JVM运行时内存管理之线程私有继续分享JVM运行时内存管理中线程共享部分: 一、堆 对于Java应用程序来说, Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。 Java堆是被所 有线程共享的一块内存区域, 在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例, Jav 阅读全文
posted @ 2024-05-15 14:57 池塘里洗澡的鸭子 阅读(72) 评论(0) 推荐(0) 编辑
JVM运行时内存管理之线程私有(生命周期和线程相同)
摘要:在JVM初识中提到之所以在程序和操作系统之间增加JVM,就是JVM有些内存管理的特性直接在操作系统上实现有些费劲。那么JVM的内存管理是怎样的呢?其中内存部分分运行时数据区和非运行时数据区,即虚拟机的内存结构。具体可参考下图: 其中线程私有的:1)程序计数器 2)虚拟机栈 3)本地方法栈 线程共享的 阅读全文
posted @ 2024-05-15 10:06 池塘里洗澡的鸭子 阅读(54) 评论(0) 推荐(0) 编辑
JVM加载机制之自定义加类加载器
摘要:在JVM类加载器分类中提及JVM自带的加载器无法满足实际业务需求时,可以自定义加载器。那一般什么情况下需要自定义加载器呢? 隔离加载类:模块隔离——把类加载到不同的应用选项中,比如Tomcat类加载器。 修改类加载方式:平台提供了三类加载器除必须加载的类加载器,可以根据实际情况按需动态加载。 扩展加 阅读全文
posted @ 2024-05-13 15:05 池塘里洗澡的鸭子 阅读(23) 评论(0) 推荐(0) 编辑
JVM加载机制之类加载器ClassLoader源码剖析
摘要:在JVM类加载器分类中通过ClassLoader获取了不同类型的类加载器,它是如此之重要那么ClassLoader究竟为何物呢?通过源码分析(以jdk17示例): 调试跟踪ClassLoader: loadclass->findclass->defineclass-addclass。 关于loadc 阅读全文
posted @ 2024-05-11 15:03 池塘里洗澡的鸭子 阅读(14) 评论(0) 推荐(0) 编辑
JVM加载机制之类加载器的执行过程
摘要:在 JVM类加载器分类对类加载器的角色有了了解,那么类加载器的执行过程如何呢?实际类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallizat 阅读全文
posted @ 2024-05-11 10:45 池塘里洗澡的鸭子 阅读(45) 评论(0) 推荐(0) 编辑
JVM加载机制之类加载器分类
摘要:Java应用程序运行大致如下过程: 上图清晰地展示了类加载的作用:Java类(.java)—> 字节码⽂件(.class) —> 字节码⽂件需要被加载到jvm内存当中(这个过程就是⼀个 类加载的过程)。这各过程中就有⼀个⾮常重要的⻆⾊叫做类加载器(ClassLoader)。 通过vm配置选项可以观察 阅读全文
posted @ 2024-05-07 11:22 池塘里洗澡的鸭子 阅读(15) 评论(0) 推荐(0) 编辑