JVM--VisualVM学习

Java程序OOM自动生成.hprof堆文件并使用jvisualvm分析 Java程序OOM自动生成.hprof堆文件并使用jvisualvm分析,简单易懂,欢迎评论区讨论。 阅读详情

使用 VisualVM 进行性能分析及调优

Comments
   
8

概述

开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。

VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,从而进行动态的性能分析。同时,它能自动选择更快更轻量级的技术尽量减少性能分析对应用程序造成的影响,提高性能分析的精度。

本文将对 VisualVM 的主要功能逐一介绍并探讨如何利用获得的数据进行性能分析及调优。

背景知识

性能分析的主要方式

  • 监视:监视是一种用来查看应用程序运行时行为的一般方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。
  • 转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。它包括以下三种:
    • 系统转储:JVM 生成的本地系统的转储,又称作核心转储。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。
    • Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。
    • 堆转储:JVM 将所有对象的堆内容存储到文件。
  • 快照:应用程序启动后,性能分析工具开始收集各种运行时数据,其中一些数据直接显示在监视视图中,而另外大部分数据被保存在内部,直到用户要求获取快照,基于这些保存的数据的统计信息才被显示出来。快照包含了应用程序在一段时间内的执行信息,通常有 CPU 快照和内存快照两种类型。
    • CPU 快照:主要包含了应用程序中函数的调用关系及运行时间,这些信息通常可以在 CPU 快照视图中进行查看。
    • 内存快照:主要包含了内存的分配和使用情况、载入的所有类、存在的对象信息及对象间的引用关系等。这些信息通常可以在内存快照视图中进行查看。
  • 性能分析:性能分析是通过收集程序运行时的执行数据来帮助开发人员定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率,主要有以下三个方面:
    • CPU 性能分析:CPU 性能分析的主要目的是统计函数的调用情况及执行时间,或者更简单的情况就是统计应用程序的 CPU 使用情况。通常有 CPU 监视和 CPU 快照两种方式来显示 CPU 性能分析结果。
    • 内存性能分析:内存性能分析的主要目的是通过统计内存使用情况检测可能存在的内存泄露问题及确定优化内存使用的方向。通常有内存监视和内存快照两种方式来显示内存性能分析结果。
    • 线程性能分析:线程性能分析主要用于在多线程应用程序中确定内存的问题所在。一般包括线程的状态变化情况,死锁情况和某个线程在线程生命期内状态的分布情况等

VisualVM 安装

VisualVM 是一个性能分析工具,自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于 JDK 根目录的 bin 文件夹下。VisualVM 自身要在 JDK6 以上的版本上运行,但是它能够监控 JDK1.4 以上版本的应用程序。下面主要介绍如何安装 VisualVM 以及各种 VisualVM 上的插件。

安装 VisualVM

VisualVM 项目的官方网站目前提供英文版本和多语言支持版本下载。多语言版本主要支持英语、日语以及中文三种语言。如果下载安装多语言版本的 VisualVM,安装程序会依据操作系统的当前语言环境去安装相应 VisualVM 的语言版本。最新 VisualVM 版本主要支持的操作系统包括:Microsoft Windows (7, Vista, XP, Server)、Linux、Sun Solaris、Mac OS X、HP-UX 11i。本文以 Microsoft Windows XP 为安装环境并支持中文。

  • 从 VisualVM 项目的官方网站上下载 VisualVM 安装程序。
  • 将 VisualVM 安装程序解压缩到本地系统。
  • 导航至 VisualVM 安装目录的 bin 目录,然后启动 jvisualvm.exe。

安装 VisualVM 上的插件

VisualVM 插件中心提供很多插件以供安装向 VisualVM 添加功能。可以通过 VisualVM 应用程序安装,或者从 VisualVM 插件中心手动下载插件,然后离线安装。另外,用户还可以通过下载插件分发文件 (.nbm 文件 ) 安装第三方插件为 VisualVM 添加功能。

从 VisualVM 插件中心安装插件安装步骤 :

  • 从主菜单中选择“工具”>“插件”。
  • 在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。
  • 逐步完成插件安装程序。
图 1. VisualVM 插件管理器
图 1. VisualVM 插件管理器

根据 .nbm 文件安装第三方插件安装步骤 :

  • 从主菜单中选择“工具”>“插件”。
  • 在“已下载”标签中,点击"添加插件"按钮,选择已下载的插件分发文件 (.nbm) 并打开。
  • 选中打开的插件分发文件,并单击"安装"按钮,逐步完成插件安装程序。
图 2. 通过 .nbm 文件安装 VisualVM 插件
图 2. 通过 .nbm 文件安装 VisualVM 插件

功能介绍

下面我们将介绍性能分析的几种常见方式以及如何使用 VisualVM 性能分析工具进行分析。

内存分析

VisualVM 通过检测 JVM 中加载的类和对象信息等帮助我们分析内存使用情况,我们可以通过 VisualVM 的监视标签和 Profiler 标签对应用程序进行内存分析。

在监视标签内,我们可以看到实时的应用程序内存堆以及永久保留区域的使用情况。

图 3. 内存堆使用情况
图 3. 内存堆使用情况
图 4. 永久保留区域使用情况
图 4. 永久保留区域使用情况

此外,我们也可以通过 Applications 窗口右击应用程序节点来启用“在出现 OOME 时生成堆 Dump”功能,当应用程序出现 OutOfMemory 例外时,VisualVM 将自动生成一个堆转储。

图 5. 开启“在出现 OOME 时生成堆”功能
图 5. 开启“在出现 OOME 时生成堆”功能

在 Profiler 标签,点击“内存”按钮将启动一个内存分析会话,等 VisualVM 收集和统计完相关性能数据信息,将会显示在性能分析结果。通过内存性能分析结果,我们可以查看哪些对象占用了较多的内存,存活的时间比较长等,以便做进一步的优化。

此外,我们可以通过性能分析结果下方的类名过滤器对分析结果进行过滤。

图 6. 内存分析结果
图 6. 内存分析结果

CPU 分析

VisualVM 能够监控应用程序在一段时间的 CPU 的使用情况,显示 CPU 的使用率、方法的执行效率和频率等相关数据帮助我们发现应用程序的性能瓶颈。我们可以通过 VisualVM 的监视标签和 Profiler 标签对应用程序进行 CPU 性能分析。

在监视标签内,我们可以查看 CPU 的使用率以及垃圾回收活动对性能的影响。过高的 CPU 使用率可能是由于我们的项目中存在低效的代码,可以通过 Profiler 标签的 CPU 性能分析功能进行详细的分析。如果垃圾回收活动过于频繁,占用了较高的 CPU 资源,可能是由内存不足或者是新生代和旧生代分配不合理导致的等。

图 7. CPU 使用情况
图 7. CPU 使用情况

在 Profiler 标签,点击“CPU”按钮启动一个 CPU 性能分析会话 ,VisualVM 会检测应用程序所有的被调用的方法。当进入一个方法时,线程会发出一个“method entry”的事件,当退出方法时同样会发出一个“method exit”的事件,这些事件都包含了时间戳。然后 VisualVM 会把每个被调用方法的总的执行时间和调用的次数按照运行时长展示出来。

此外,我们也可以通过性能分析结果下方的方法名过滤器对分析结果进行过滤。

图 8. CPU 性能分析结果
图 8. CPU 性能分析结果

线程分析

Java 语言能够很好的实现多线程应用程序。当我们对一个多线程应用程序进行调试或者开发后期做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否有死锁、热锁等情况的发生,从而分析系统可能存在的问题。

在 VisualVM 的监视标签内,我们可以查看当前应用程序中所有活动线程和守护线程的数量等实时信息。

图 9. 活跃线程情况
图 9. 活跃线程情况

VisualVM 的线程标签提供了三种视图,默认会以时间线的方式展现。另外两种视图分别是表视图和详细信息视图。

时间线视图上方的工具栏提供了缩小,放大和自适应三个按钮,以及一个下拉框,我们可以选择将所有线程、活动线程或者完成的线程显示在视图中。

图 10. 线程时间线视图
图 10. 线程时间线视图
图 11. 线程表视图
图 11. 线程表视图

我们在详细信息视图中不但可以查看所有线程、活动线程和结束的线程的详细数据,而且也可以查看某个线程的详细情况。

图 12. 线程详细视图
图 12. 线程详细视图

快照功能

我们可以使用 VisualVM 的快照功能生成任意个性能分析快照并保存到本地来辅助我们进行性能分析。快照为捕获应用程序性能分析数据提供了一个很便捷的方式因为快照一旦生成可以在任何时候离线打开和查看,也可以相互传阅。

VisualVM 提供了两种类型的快照:

  • Profiler 快照:当有一个性能分析会话(内存或者 CPU)正在进行时,我们可以通过性能分析结果工具栏的“快照”按钮生成 Profiler 快照捕获当时的性能分析数据。
图 13. Profiler 快照
图 13. Profiler 快照
  • 应用程序快照:我们可以右键点击左侧 Applications 窗口中应用程序节点,选择“应用程序快照”为生成一个应用程序快照。应用程序快照会收集某一时刻的堆转储,线程转储和 Profiler 快照,同时也会捕获 JVM 的一些基本信息。
图 14. 应用程序快照
图 14. 应用程序快照

转储功能

线程转储的生成与分析

VisualVM 能够对正在运行的本地应用程序生成线程转储,把活动线程的堆栈踪迹打印出来,帮助我们有效了解线程运行的情况,诊断死锁、应用程序瘫痪等问题。

图 15. 线程标签及线程转储功能
图 15. 线程标签及线程转储功能

当 VisualVM 统计完应用程序内线程的相关数据,会把这些信息显示新的线程转储标签。

图 16. 线程转储结果
图 16. 线程转储结果

堆转储的生成与分析

VisualVM 能够生成堆转储,统计某一特定时刻 JVM 中的对象信息,帮助我们分析对象的引用关系、是否有内存泄漏情况的发生等。

图 17. 监视标签及堆转储功能
图 17. 监视标签及堆转储功能

当 VisualVM 统计完堆内对象数据后,会把堆转储信息显示在新的堆转储标签内,我们可以看到摘要、类、实例数等信息以及通过 OQL 控制台执行查询语句功能。

堆转储的摘要包括转储的文件大小、路径等基本信息,运行的系统环境信息,也可以显示所有的线程信息。

图 18. 堆转储的摘要视图
图 18. 堆转储的摘要视图

从类视图可以获得各个类的实例数和占用堆大小数,分析出内存空间的使用情况,找出内存的瓶颈,避免内存的过度使用。

图 19. 堆转储的类视图
图 19. 堆转储的类视图

通过实例数视图可以获得每个实例内部各成员变量的值以及该实例被引用的位置。首先需要在类视图选择需要查看实例的类。

图 20. 选择查询实例数的类
图 20. 选择查询实例数的类
图 21. 实例数视图
图 21. 实例数视图

此外,还能对两个堆转储文件进行比较。通过比较我们能够分析出两个时间点哪些对象被大量创建或销毁。

图 22. 堆转储的比较
图 22. 堆转储的比较
图 23. 堆转储的比较结果
图 23. 堆转储的比较结果

线程转储和堆转储均可以另存成文件,以便进行离线分析。

图 24. 转储文件的导出
图 24. 转储文件的导出

总结

本文首先简要列举了一些性能分析相关的背景知识。然后介绍了 VisualVM 的下载和安装。最后从内存性能、CPU 性能、快照功能以及转储功能四个方面展开,进一步说明了如何使用 VisualVM 进行性能分析。通过本文的介绍,相信读者对性能分析会有一定的了解,并可以利用 VisualVM 进行性能分析。

Day04_JVM实战 可以看到,FullGC非常频繁,而且我们的方法区,占用了58729KB/1024= 57.8M空间,你JVM参数里面方法区设置的是60M,几乎把整个方法区空间占用,所以得出的结论是方法区空间设置过小,或者存在大量由于反射生成的代理类。这里面的OU是老年代已经使用的量,你每隔十分钟采样一次,然后比较这多组数据的OU的数值,如果这些值呈上涨趋势,则说明该Java程序的老年代内存已使用量在不断上涨,这意味着无法回收的对象在不断增加,因此很有可能存在内存泄漏。但GC频率比之前的1024M时要多了一些。 阅读详情

相关推荐

VirtualVM:Java 监控工具使用指南

进入某个 Java 进程的监控界面后,首先看到的是“概述”页面,这里会显示 Java 进程的基本信息,如 JVM 版本、启动时间、堆内存大小等。

m0_65026326的博客 1910

使用jdk自带的VisualVM分析hprof堆转储文件

:是JVM 的某个时间点、Java 进程的内存快照。里面包含了当时内存中还没有被 full GC 回收的所有对象和类信息。可以使用 jdk 自带的VisualVM工具来进行分析(jdk高于1.8或1.8晚期的 jdk 已经没有自带了,可以去。4.双击具体的实例可以查看该实例的内容和占用的大小,可以选择全部展示或者把该内容保存为一个txt文件。3.选择类,然后对堆内存大小进行排序,双击可以查看具体类型的实例内存占用情况。2.选择文件点击装入,然后加载要分析的hprof文件。.........

西凉的悲伤博客 1万+

Java性能调优:利用VisualVM进行性能分析

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

F1520080的博客 1286

八、jdk工具之JvisualVM之四--VisualVM 进行性能分析及调优

背景知识 性能分析的主要方式 监视:监视是一种用来查看应用程序运行时行为的一般方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。 转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。它...

weixin_34349320的博客 1457

一篇文章掌握整个JVM,JVM超详细解析!!!

首先先了解电脑是二进制的系统,他只认识 01010101比如我们经常要编写 HelloWord.java 电脑是怎么认识运行的 HelloWord.java是我们程序员编写的,我们人可以认识,但是电脑不认识Java文件编译的过程 因此就需要编译:(这是一个大概的观念 抽象画的概念)这个夸平台是中间语言(JVM)实现的夸平台 java有JVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统难道 C 和 C++ 不能夸平台吗 其实也可以 C和C++需要在编译器层面去兼容不同操作系统的不同层面,写过C和C

uuqaz的博客 4488

论文阅读|《强化学习在加工时间可变的机器人流水车间调度中的应用》

《Reinforcement Learning for robotic flow shop scheduling with processing time variations》 International Journal of Production Research/2021 1 摘要 我们解决了一个机器人流水车间调度问题,其中两种零件类型在每组给定的专用机器上进行处理。单个机器人在固定轨道上移动,一次运输一个部件,在给定的时间间隔内,这些部件在机器上的加工时间各不相同。我们使用强化...

太剧烈的快乐与太剧烈的悲哀是有相同之点的——同样地需要远离人群! 2930

深入JVM学习之VisualVM 工具分析GC

深入JVM学习之VisualVM 工具分析GC VisualVM:多合一故障处理工具 VisualVM是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序,并且可以预见在未来一段时间内都是官方主力发展的虚拟机故障处理工具。他除了运行监视,故障处理外,还提供了很多其他方面的功能。如性能分析等 VisualVM基于NetBeans平台开发,因此它一开始就具备了插件扩展功能的特性,通过插件扩展支...

dailingnan0827的博客 1992

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

JVM学习总结五(番外)——VisualVM

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34138377的博客 134

深入博通PEX89000内部:那颗ARM CPU和Synthetic Mode到底能玩出什么花样?

本文深入解析博通PEX89000系列PCIe交换芯片内置的ARM CPU与Synthetic Mode技术,揭示其在AI计算和数据中心的智能潜能。通过ARM Cortex CPU的实时控制和Synthetic Mode的自治网络功能,PEX89000实现了GPU集群的动态拓扑重组和资源池化,大幅提升AI训练效率。文章还探讨了该技术在软件定义数据平面和弹性AI架构中的创新应用。

weixin_30776273的博客 213

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1553

JVM故障处理工具,使用总结

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 用都用不到怎么学? 没有场景、没有诉求,怎么学习这些似乎用不上知识点。 其实最好的方式就是归纳、整理、实践、输出,一套组合拳下来,你就掌握了这个系列的知识了。 但在当前阶段可能真的用不上,JVM是一个稳定服务,哪能天天出问题,哪需要你老排查。又不是像你写的代码那样! 可是知识的学习就是把你垫基到更高层次后,才有机会接触更有意思的工作和技术创新。如果只是单纯的学几个指令,其实并没有多

bugstack虫洞栈 3737

Python从0到100完整学习指南(必看导航)

想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学业升学和工作就业的先行者!

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 6万+

JVM唠嗑(一)—— 堆栈 内存溢出 OOM 堆溢出 dump visualVM

文章目录 前言——关于JVM调优的看法 JVM JRE JDK 堆 栈 堆溢出 dump visualVM 工具基本使用 后记 前言——关于JVM调优的看法 JVM调优,听起来是个玄幻高深的技术,java程序员里面你说自己会jvm调优,就感觉,同是九年义务教育,为什么你这么秀:)所以有些人似乎特别急切学JVM调优,希望看那些大部头的书来“精通它”, 但实际上,经过一系列调查,实际用JVM调优,需要有以下前提: 要求很高 最大限度发挥硬件效能 极端的业务环境,比如大数据计算引擎 要求堆区足够大,

a10534126的博客 818

飞牛NAS打造成童年经典游戏机

这篇文章介绍如何使用飞牛NAS搭建经典游戏模拟器。首先需开启Docker并下载RetroArch-web镜像,随后创建容器并设置端口映射。启动后上传游戏ROM文件(如NES格式),在模拟器中加载即可游玩。文章以修改版坦克大战为例,详细说明按键配置方法。同时还提到公网访问需配置DDNS或使用ZeroTier内网穿透。通过这套方案,用户可以在NAS上重温红白机等经典游戏体验。

dgnankai的专栏 885

通信原理 | CRC循环冗余校验码(最简介明了的原理和matlab程序)

异或运算: 多项式: CRC校验中用到的除数,是由多项式的各项系数组成的,如下所示: 没有的项系数为0,比如:x5次方、x3次方下一步,在原数据串的末端加“0”0的数量由多项式决定具体来说,多项式的阶数是多少就加几个0 具体操作: 现在,我们有了除数,也有了处理过的数据串,如下所示: 就可以开始计算校验和 了将数据串第一个1与除数左对齐,按位进行异或操作: 将未处理的数据搬下来作为新的数据,重复操作: 将新的数据串第一个1与除数左对齐,再重复按位异或操作: 如此循环,直到所有数据都处理过

若北辰 2357

jvm问题自查思路

本文聊一下最近处理了一些jvm的问题上,将这个排查和学习过程分享一下,看了很多资料,最终都会落地到几个工具的使用,本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。

weixin_36098377的博客 1834

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

零基础入门:VisualVM安装与基础使用指南

作为一个完全免费的JVM监控和性能分析工具,它不仅能直观展示内存、线程等关键指标,还支持插件扩展。下面把我从零开始的学习过程整理成笔记,希望能帮到同样刚接触的小伙伴。搭建了演示环境,它的网页版编辑器可以直接运行Java项目,配合VisualVM实时观察效果非常方便。特别是部署功能,能一键把demo项目变成可访问的在线应用,省去了本地配置的麻烦。对于新手来说,VisualVM最棒的地方在于所有数据可视化呈现,不需要理解底层原理就能发现问题。监控堆内存变化:观察应用运行时的内存波动规律。整个学习过程中,我用。

BlackironPanther23的博客 484

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

跟进JVM七大核心系统的资源升级 从基础理论到高级应用扎实你的应用

内存设置:根据应用程序的需求和性能特点,合理设置堆内存大小、新生代和老年代的比例等参数,以避免内存不足或过度消耗内存的问题。GC策略选择:根据应用的负载和特点,选择合适的GC收集器和GC策略,如CMS、G1等,并进行调优以提高垃圾回收性能。垃圾回收(GC)算法:了解常见的GC算法,如标记清除、复制、标记整理等,以及不同类型的垃圾收集器的特点和适用场景。JVM架构:了解JVM的整体架构,包括类加载器、运行时数据区域、执行引擎等,理解每个组件的作用和相互关系。三、掌握JVM调试和性能分析工具。

2301_81673114的博客 1998

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到一些分析的工具,因为一般使用IDEA,而VisualVM对于IDEA也不错,所以就选择VisualVM来分析JVM性能,这篇文章就介绍一下如何利用VisualVM进行性能分析,以及在分析之前需要知道一些GC优化的原则,GC优化的目的,以及遇到...

JKX_geek的博客 333

干货-深入理解Java虚拟机-2-虚拟机性能监控命令与故障处理工具

前言 学习JVM有什么意义和作用? 1、学习JVM能更深入的理解Java这门语言,能理解Java语言底层的执行过程。 2、学习JVM,为了项目上线后去排查一些程序log日志中无法呈现的问题,可以通过GC日志来排查项目问题以及进行调优。 3、能够利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以辅助你观察Java应用在运行时堆的布局情况,由此你可以通过调整JVM相关参数提高Java应用的性能。 4、学习之前面试官虐待你你会觉得很痛苦,学完之后再被虐待时你会觉得很享受。 基

Java全栈领域/离线地图/微服务 471

jvm调优

jvm优化,jvm的运行参数,jps、jmap、jstat等命令,MAT、VisualVM等工具

Marion的博客 1051

【JVM系列8】JVM知识点总览

前言 我理解JVM应该属于Java高阶的知识,之前是通过博客学习这块知识,后来对照着《深入理解Java虚拟机》书籍把重点知识又过了一遍。经过大半个月的学习,我给出我学习的感受。 我感觉其实通过博客学习这块知识其实就够了,因为博客中的知识直击JVM的靶心,基本都是干货,但是对于一些实际的场景用例,博客给的示例不多,这个是通过博客学习唯一的缺点。 通过书籍学习JVM知识,真的感觉这本书太厚了,不建议新人学习,因为这本书也就前5章的内容比较干货,后面的大部分知识可以直接跳过,或者作为选学的知识,比如你学习书

syh121的博客 261
上一篇: Eclipse快捷键与使用技巧总结
下一篇: 业务流程图的绘制流程分享(一)
落叶_201306
博客等级 码龄12年 35粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值