如何自建网站服务器,个人网站备案名字,友情链接方面pr的选择应该优先选择的链接为,宁波网站推广平台推荐一、基本概念
JProfiler#xff1a;即“Java Profiler”#xff0c;即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具#xff0c;主要帮助开发人员识别和解决性能瓶颈问题。
JVM#xff1a;即“Java Virtual Machine”#xff0c…一、基本概念
JProfiler即“Java Profiler”即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具主要帮助开发人员识别和解决性能瓶颈问题。
JVM即“Java Virtual Machine”即“Java虚拟机”。它是一个用于运行Java字节码的抽象计算机。 (JProfiler分析的对象是Java应用程序而这些程序都运行在JVM之上JProfiler通过与JVM交互收集有关CPU使用、内存分配、线程状态等详细信息。JVM提供的这些数据是JProfiler分析性能瓶颈、内存泄漏、线程死锁等问题的基础。由于JVM执行的是Java字节码JProfiler可以直接分析字节码级别的代码执行情况从而精确定位到方法调用、代码路径等细节。)
内存是计算机中用来临时存储运行程序和数据的地方运行中的数据和程序需要载入内存计算机才能对其进行处理。 (某些对象由于逻辑问题没有被释放时内存将逐渐耗尽导致程序崩溃。JProfiler可以帮助检测内存泄漏找出不再使用却没有释放的对象也可以通过JProfiler监控内存使用的高峰时刻帮助识别应用在负载高峰时的内存需求确保程序在高压力环境下稳定运行。)
CPU即“中央处理器”。它是计算机系统的核心处理单元负责执行指令和处理数据相当于计算机的大脑。 (在JProfiler中的主要作用是分析Java应用程序对CPU资源的使用情况。JProfiler能显示各个方法的CPU使用情况帮助开发者找到耗费CPU资源最多的代码部分识别性能瓶颈。”热点”代码即在CPU使用中最频繁被调用的方法或函数可以协助开发者优化这些代码以提升整体性能。)
SSHSSH 是 Secure Shell 的缩写是一种网络协议用于安全地远程登录到另一台计算机上执行命令和传输文件。 (SSH隧道提供了一种安全的方式使得JProfiler可以从本地机器连接到远程服务器上的JVM而不需要直接在网络上暴露JVM的管理端口。windows上查看SSH服务是否安装Get-Service -Name sshd开启SSH服务Start-Service -Name sshd另外对比TCPTCP 属于传输层协议主要目的是提供一种可靠的端到端的数据传输服务而 SSH 是一种应用层协议它通常使用 TCP 作为其底层传输机制主要目的是提供安全的远程登录和其他安全服务。)
二、操作步骤
1、连接JVM
1.1、分析本地JVM
attach模式选择本地JVM快速连接 它可以用来分析本地的CPU状况及除数组内存数据以外的内存状况launch模式选择应用程序 选择jar包后点击开始会由JProfiler启动JVM它本质也会在启动的时候添加代理所以可以完整的分析CPU状况及内存状况包括数组内存数据
1.2、分析远程JVM
attach模式选择远程JVM配置连接 连接远程JVMwindows系统需要手动下载配置代理其他系统则不需要 (在windows系统中在远程目标机器上将下载的jprofiler代理文件解压后在jar包启动文件的命令中增加-agentpath设置代理命令为 java -agentpath:C:\Program Files\jprofiler14\bin\windows-x64\jprofilerti.dllport8890,nowait -jar ectd-admin-web-v3.0.6.jar 。在会话设置中需要手动指定分析的代理端口为8890)
2、内存分析
2.1、功能介绍 使用上述红框框出来的三部分功能进行内存的分析这里对这些功能进行简要的介绍遥测 内存可以查看当前系统的内存整体情况进而判断系统中是否存在严重的内存问题比如内存泄漏或内存溢出实时内存 所有对象显示当前系统的整体内存分配情况 记录的对象显示点击 记录内存 后的所有对象的内存情况并且可以选择活性模式显示存活对象或垃圾回收对象然后可以点击某个对象显示分配热点或分配调用树情况 分配调用树显示点击点击 记录内存 后具有调用树结构的内存分配情况并且可以选择活性模式以及特定类型的对象进行查看 分配热点显示点击点击 记录内存 后分配频率高的对象可以以对象为维度去查看调用出处并且也可以选择活性模式以及特定类型的对象进行查看 类跟踪器可以在前面从记录的对象中选择对象添加到类跟踪器中查看特定对象内存的变化和释放堆遍历器 选择生成快照或在记录对象中选择指定对象在堆遍历器中查看堆遍历器快照只显示无引用链的对象包括GC的对象以及暂时存活未被GC但无引用的对象通过堆遍历器快照可查看异常未回收对象被谁所持有从而找出内存溢出问题
2.2、分析步骤
2.2.1、首先查看遥测中的内存总览查看内存是否存在高占用的情况
2.2.2、查看实时内存中的所有对象初步查看内存中已经存在的占用高内存的对象是谁
2.2.3、复现场景并记录分配调用栈数据并设置调用树分配选项为所有类和所有对象查看分配调用树确定占用高内存的对象的代码位置使用分配热点根据对象反向查看调用位置也可以
2.2.4、将异常对象添加到类跟踪器结合代码确认对象内存是否正常释放而不存在内存泄漏问题
2.2.5、假如高占用内存的对象已经确定且无内存泄漏查看其在堆内快照的引用判断是否被不正确的持有未释放而导致内存溢出问题
3、CPU分析
3.1、功能介绍 使用上述红框框出来的三部分功能进行CPU的分析这里对这些功能进行简要的介绍遥测 CPU负载可以查看当前系统的CPU负载整体情况判断系统中是否存在CPU使用率过高的问题CPU视图 调用树显示点击 记录CPU 后当前程序中各个方法或线程的 CPU 使用情况并且可以选择具体的线程及线程状态进行筛选 热点显示点击 记录CPU 后列出消耗最多资源的方法或类通常是性能瓶颈所在的地方并且可以选择具体的线程及线程状态进行筛选 调用图显示点击 记录CPU 后局部线程调用的CPU使用情况并且可以选择具体的线程中的节点作为最初显示的节点去创建调用图 异常值检测显示点击 记录CPU 后存在相较于自身平均调用时间特别突出异常系数的方法 其他功能项不常用略过
3.2、分析步骤
3.2.1、首先查看遥测中的CPU负载总览查看内存是否存在高使用的情况
3.2.2、复现场景并记录CPU数据查看调用树或者热点确定CPU占用率高的方法的代码位置如果有需要也可也对指定调用的线程方法设置线程图更加简明的查看
3.2.3、查看异常值检测排除存在异常的方法如有必要进行进一步的分析
总结
JProfiler通过给JVM启动添加代理去追踪和记录相关内存及CPU数据以不同的形式呈现出来关键点在于根据需求决定呈现形式的参数或配置
三、额外补充
1、其他子系统探针
如图为JProfiler为JRE中的重要子系统提供了一些探针。探针将instrumentation添加到特定的类中以便收集其数据从运行的应用程序中提取语义数据并将其显示在分析器中。 现在介绍其中部分常用的几个探针数据库 JDBC:当点击记录探针JDBC及记录CPU后即可完整查看JDBC探针数据包括时间线、连接情况、在调用树中的耗时热点、还有执行情况总览等有助于分析SQL中引起的性能瓶颈HTTP,RPC JEE HTTP服务器点击 记录探针HTTP服务器 可以查看来自浏览器等客户端传入的HTTP请求状况包括请求的热点、总览等 HTTP客户端点击 记录探针HTTP客户端 可以查看从服务器传出的HTTP请求状况包括请求的调用树需要开启记录CPU、热点、总览等
2、IntelliJ IDEA集成 在IDEA的设置——插件中搜索JProfiler然后安装安装完成后重启IDEA即可使用JProfiler启动,这样启动时会直接拉起JProfiler进行相关数据的统计并且在调用书中点击显示源码时可直接跳转到IDEA中显示对应的代码位置
3、手动添加源码
通过上述方式可添加源码这样在调用树中双击即可查看源码但是只是定位到类通过上述方式可在调用树上增加代码行数的显示这样方便在显示的源代码类中找到对应行
4、性能问题与配置
JProfiler连接到JVM后会对其性能造成一定的影响。这种性能影响的程度与JProfiler的配置和使用的功能模块有关。具体影响方面比如监控开销在目标JVM中插入探针来跟踪方法调用这会增加额外的计算和内存开销、内存开销维护大量的数据结构来存储分析信息比如堆栈数据等、网络通信远程连接、IO影响快照写入等。需要注意的配置和操作 方法调用记录类型对于I/O密集型输入输出频率高比如磁盘、数据库、REST请求选择Instrumentation模式会修改选定类的字节码以跟踪方法的进入和退出选择指定的方法或包可以更详细的查看方法的信息包括调用次数对于计算密集型CPU运算和数据处理强度高比如图片视频文档分析处理、大规模运算、加解密选择异步采样可以获取更准确的CPU时间其他情况一般选择全采样即可 采样频率如果将方法调用记录类型设置为采样采样频率越高数据越详细但性能开销也越大。可以在 方法调用记录 中选择采用间隔的ms数控制 方法忽略如果将方法调用记录类型设置为instrumentation所有分析类的方法都会被测量这对于执行时间很短的方法来说 会产生很大的开销。为了缓解instrumentation的问题JProfiler有一个叫做自动调节的机制。分析代理会不时地检查instrumentation开销很高的方法 并将它们传送到JProfiler GUI中可以单击该状态栏条目来查看检测到的开销热点并选择将其纳入忽略方法列表。在 高级设置 的 CPU分析 中可以开启或关闭自动调节 触发器设置可以在 会话设置 中的 触发器设置 中设置触发器条件合理设置触发器可以减少不必要的数据收集降低性能开销。比如设置 CPU 使用率超过某个阈值时开始收集数据或者置特定方法调用次数超过某个阈值时开始收集数据 避免多开比如同时开启CPU记录和分配记录或者还有其他比如JDBC、HTTP探针等尽量需要查看哪个记录哪个模块不用的就停止记录