当前位置: 首页 > news >正文

企业电子商务网站对seo的理解

企业电子商务网站,对seo的理解,简单网页设计模板源代码,做网站 负责 域名备案在 Java 应用程序的开发和维护过程中,性能监控和故障诊断是至关重要的。本文将详细介绍三款常用的 Java 性能监控工具:JConsole、VisualVM 和 Java Mission Control(JMC),并探讨它们的功能和使用方法。 1 JConsole 1…

在 Java 应用程序的开发和维护过程中,性能监控和故障诊断是至关重要的。本文将详细介绍三款常用的 Java 性能监控工具:JConsole、VisualVM 和 Java Mission Control(JMC),并探讨它们的功能和使用方法。

1 JConsole

1.1 简介

JConsole(Java Monitoring and Management Console)是一款基于 JMX(Java Management Extensions)的可视化监控管理工具。JMX 是 Java 管理系统中的一个标准,JConsole 则是 JMX 的一个实现类。JConsole 可以用于监控 Java 应用程序的运行状态,包括内存使用、线程状态、类加载、垃圾回收(GC)等,还可以进行一些基本的性能分析。

1.2 连接 Java 程序

JConsole 位于 %JAVA_HOME%/bin 目录下。启动 JConsole 后,会显示本机正在运行的 Java 程序,用户可以选择一个程序进行连接。此外,JConsole 还支持远程连接,监控服务器上的 Java 程序。远程连接需要在启动 Java 程序时添加以下参数:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=<PORT>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

其中,<PORT> 是 JMX 代理监听的端口号,authenticate=false 表示不需要身份验证,ssl=false 表示不使用 SSL 加密连接。

1.3 功能概述

使用 JConsole 连接本地 Java 程序后,可以在 概述 面板中查看程序的运行时概况。主要包括以下四项信息的曲线图:

  • 堆内存使用量:显示 Java 堆内存的使用情况。
  • 线程:显示当前活动的线程数量。
  • :显示已加载的类数量。
  • CPU 占用率:显示程序的 CPU 使用率。

这些曲线图可以帮助开发者快速了解程序的整体运行状态。
在这里插入图片描述

1.3.1 内存监控

JConsole 的内存监控功能相当于可视化的 jstat 命令,能够实时监控 Java 堆内存的使用情况。具体可以细化为以下几个区域:

  • Eden 区:新创建的对象首先分配在 Eden 区。
  • Survivor 区:存活的对象从 Eden 区移动到 Survivor 区。
  • 老年代:长时间存活的对象最终会被移动到老年代。

示例代码:观察内存变化
以下代码用于模拟内存分配,并通过 JConsole 观察内存变化:

/*** VM参数: -Xms100m -Xmx100m -XX:+UseSerialGC*/
class JConcoleRAMMonitor {/**** 内存占位符对象,一个 OOMObject 大约占 64KB*/static class OOMObject {public byte[] placeholder = new byte[64 * 1024];}public static void fillHeap(int num) throws InterruptedException {List<OOMObject> list = new ArrayList<OOMObject>();for (int i = 0; i < num; i++) {// 稍作延时,令监视曲线的变化更加明显Thread.sleep(300);list.add(new OOMObject());}System.gc(); // 手动触发垃圾回收}public static void main(String[] args) throws Exception {fillHeap(2000); // 填充 2000 个对象}
}

运行结果分析

  • Eden 区趋势:运行代码后,Eden 区的内存使用量呈折线趋势增长。
    在这里插入图片描述

  • 执行 GC 后:点击 JConsole 中的「执行 GC」按钮后,Eden 区的对象被回收,存活的对象被移动到老年代,此时老年代的柱状图会达到峰值。
    在这里插入图片描述

1.3.2 线程监控

JConsole 的线程监控功能相当于可视化的 jstack 命令,能够显示应用程序内的线程状态。具体功能包括:

  • 线程数量:显示当前活动的线程数量。
  • 线程详情:左下方列出程序中所有的线程,点击线程名称可以查看线程的栈信息。
  • 死锁检测:JConsole 可以快速定位死锁问题。

示例代码:死锁检测
以下代码模拟了一个典型的死锁场景:

class DeadLockDemo {private static final Object lock1 = new Object();private static final Object lock2 = new Object();public static void main(String[] args) {new Thread(() -> {synchronized (lock1) {System.out.println("线程1获取到了锁1");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock2) {System.out.println("线程1获取到了锁2");}}}).start();new Thread(() -> {synchronized (lock2) {System.out.println("线程2获取到了锁2");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (lock1) {System.out.println("线程2获取到了锁1");}}}).start();}
}

运行结果分析

  • 运行代码后,点击 JConsole 线程面板中的「检测到死锁」按钮,可以查看线程的死锁信息。
    在这里插入图片描述

1.3.3 类加载情况

在 JConsole 的 面板中,可以查看以下信息:

  • 已加载的类数量:显示当前已加载的类数量。
  • 已卸载的类数量:显示已卸载的类数量。

这些信息可以帮助开发者了解应用程序的类加载行为。
在这里插入图片描述

1.3.4 VM 概要

在 JConsole 的 VM 概要 面板中,可以查看当前应用程序的运行时环境信息,包括:

  • 虚拟机类型:如 HotSpot。
  • 虚拟机版本:如 JDK 版本号。
  • 堆信息:如堆内存的初始大小和最大大小。
  • 虚拟机参数:如启动时设置的 JVM 参数。

---

2. VisualVM

VisualVM(All-in-One Java Troubleshooting Tool)是一款集性能监控、故障诊断和分析于一体的工具。它不仅能够监控 Java 应用程序的运行状态,还支持生成堆转储快照、分析 CPU 和内存使用情况等功能。

2.1 安装与启动

2.1.1 下载与安装

VisualVM 的安装非常简单,访问其官方网站 https://visualvm.github.io 下载适合您操作系统的版本。安装完成后,启动 VisualVM,界面如下所示:

在这里插入图片描述

2.1.2 插件功能

VisualVM 支持插件扩展,用户可以通过以下步骤安装插件:

  1. 点击菜单栏中的 Tools -> Plugins
  2. 在可用插件列表中选择需要的插件,点击安装。

插件功能极大地扩展了 VisualVM 的能力,例如支持更多的监控指标、分析工具等。

在这里插入图片描述

2.2 生成与浏览堆转储快照

堆转储快照(Heap Dump)是分析内存问题的重要工具。VisualVM 提供了两种生成堆转储快照的方式:

2.2.1 方式一:右键生成

  1. 在应用程序面板中,右键点击目标应用程序。
  2. 选择 Heap Dump,VisualVM 会自动生成堆转储快照。
    在这里插入图片描述

2.2.2 方式二:监视面板生成

  1. 在应用程序面板中选择目标应用程序。
  2. 在“监视”面板中,点击 Heap Dump 按钮。
    在这里插入图片描述

2.2.3 保存堆转储快照

生成的堆转储快照默认是临时文件,关闭 VisualVM 后会被自动清理。如果需要保存快照文件,可以:

  1. heapdump 节点上右键点击。
  2. 选择 另存为,将堆转储快照保存到本地。

---

2.3 分析程序性能

VisualVM 提供了强大的性能分析功能,可以帮助开发者深入了解应用程序的 CPU 和内存使用情况。

2.3.1 CPU 分析

  1. 分析 profiler 面板中,点击 CPU 按钮。
  2. VisualVM 会开始记录应用程序执行的所有方法。
  3. 返回应用程序进行操作,操作结束后点击 停止 按钮。
  4. 分析结果会显示每个方法的执行次数和执行耗时。

2.3.2 内存分析

  1. 分析 profiler 面板中,点击 Memory 按钮。
  2. VisualVM 会开始记录应用程序的内存分配情况。
  3. 返回应用程序进行操作,操作结束后点击 停止 按钮。
  4. 分析结果会显示每个方法的内存分配情况。

---

3. Java Mission Control (JMC)

JMC 是一款集性能监控、故障诊断和分析于一体的工具,适用于 Java 应用程序的开发和生产环境。它提供了丰富的功能,包括 MBean 服务器监控、飞行记录器(JFR)等,能够帮助开发者深入分析应用程序的性能问题。

  • GitHub 地址:https://github.com/openjdk/jmc
  • 官方下载:https://jdk.java.net/jmc/8/

3.1 安装与启动

  1. 访问 https://jdk.java.net/jmc/8/ 下载 JMC。
  2. 解压下载的文件,启动 JMC。

启动后的界面如下所示:

在这里插入图片描述

3.2 MBean 服务器

MBean(Managed Bean)是 Java 管理扩展(JMX)的一部分,用于管理 Java 应用程序。通过 JMC 的 MBean 服务器功能,可以监控以下信息:

  • Java 堆使用率:显示堆内存的使用情况。
  • CPU 使用率:显示应用程序的 CPU 占用情况。
  • Live Set + Fragmentation:Live Set 表示存活对象的大小,Fragmentation 表示内存碎片的大小。

---

3.3 飞行记录器(Flight Recorder, JFR)

飞行记录器(JFR)是 JMC 提供的一项强大功能,能够记录应用程序在一段时间内的运行情况,并进行分析和展示。JFR 提供的数据质量通常比其他工具通过代理形式采样获得的更高。

3.3.1 启用 JFR

要使用 JFR,需要在启动 Java 程序时添加以下参数:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

3.3.2 使用 JFR 进行性能记录

  1. 连接已启用 JFR 的 Java 程序。
  2. 启动飞行记录器,设置记录时间(例如 1 分钟)。
  3. 记录结束后,JMC 会自动打开记录文件。
    在这里插入图片描述在这里插入图片描述

3.3.3 JFR 的优势

  • 垃圾回收分析:JFR 不仅提供各分代的大小、收集次数和时间等“结果”类信息,还能显示内存中分配和回收的对象,提供“过程”类信息。
  • CPU 和内存分析:JFR 可以记录应用程序的 CPU 使用情况和内存分配情况,帮助开发者定位性能瓶颈。

3.4. 示例代码与分析

3.4.1 CPU 使用过高示例

以下代码模拟了一个 CPU 使用率过高的场景:

/*** 消耗 CPU 的线程* 不断循环进行浮点运算*/
private static void cpuHigh() {Thread thread = new Thread(() -> {Thread.currentThread().setName("cpu_high_thread");while (true) {double pi = 0;for (int i = 0; i < Integer.MAX_VALUE; i++) {pi += Math.pow(-1, i) / (2 * i + 1);}System.out.println("Pi: " + pi * 4);}});thread.start();
}

在这里插入图片描述

3.4.2 内存使用过高示例

以下代码模拟了一个内存使用率过高的场景:

/*** 不断新增 BigDecimal 信息到 list*/
private static void allocate() {new Thread(() -> {Thread.currentThread().setName("memory_allocate_thread");List<BigDecimal> list = new ArrayList<>();for (int i = 0; i < Integer.MAX_VALUE; i++) {try {Thread.sleep(1);} catch (InterruptedException e) {throw new RuntimeException(e);}list.add(new BigDecimal(i));}}).start();
}

在这里插入图片描述

3.4.3 分析结果

  • 内存面板:通过 JMC 的内存面板,可以看到 String 对象占用了最多的内存。
  • 线程页面:切换到线程页面,勾选相关复选框,可以查看内存分配情况和 CPU 使用情况。
  • 死锁检测:JMC 还可以检测并显示死锁信息。

4. 第三方工具

除了上述官方工具外,还有一些第三方工具也非常有用:

  • MAT(Memory Analyzer Tool):Java 堆内存分析工具。
  • GChisto:GC 日志分析工具。
  • GCViewer:GC 日志分析工具。
  • JProfiler:商用的性能分析利器。
  • Arthas:阿里开源诊断工具。
  • async-profiler:Java 应用性能分析工具,支持火焰图和跨平台。

5. 总结

本文介绍了三款常用的 Java 性能监控工具:JConsole、VisualVM 和 Java Mission Control。它们各自具有独特的功能和优势,能够帮助开发者更好地监控和诊断 Java 应用程序的性能问题。在实际开发中,可以根据具体需求选择合适的工具,并结合第三方工具进行更深入的分析和优化。

通过合理使用这些工具,开发者可以更高效地定位和解决性能瓶颈,确保 Java 应用程序的稳定运行。

6 思维导图

在这里插入图片描述

7 参考链接

JVM 性能监控工具之可视化篇

http://www.hrbkazy.com/news/2831.html

相关文章:

  • 人大网站建设工作要求苏州搜索引擎优化
  • 建设网站的企业是什么长春百度推广排名优化
  • 找高权重的网站做外链武汉网站制作推广
  • 阜阳城乡建设局网站百度搜索推广登录入口
  • 图文网站建设奉化首页的关键词优化
  • 模板网站怎么做卖seo的目的是什么
  • 禹城网站建设公司磁力云搜索引擎入口
  • 杭州网站推广营销型网站策划书
  • 做网站制作软件手机网站百度关键词排名查询
  • 可以做网站的app企业网站优化价格
  • 新疆网站建设搭建太原百度公司地址
  • 东西湖区城乡建设局网站怎样做网络推广效果好
  • 快云助手网站建设视频seo提升关键词排名
  • 建设企业网站心得体会自动点击关键词软件
  • 江苏城市建设职业学院网站海外自媒体推广
  • 怎样创建行业门户网站广告语
  • 东莞网站建设服务如何让百度搜索到自己的网站
  • wordpress文章全屏seo优化易下拉霸屏
  • 后湖做网站沧州seo推广
  • 哪里有网站建设官网百度快速收录接口
  • google 垃圾网站新榜数据平台
  • 怎么用软件做原创视频网站下载百度极速版
  • 珠海网站制作系统海外网络推广方案
  • 帝国手机网站cms系统怎么建立网站
  • 绵阳政府网站建设做高端网站公司
  • 松江做网站公司百度400电话
  • 企业网站备案在哪个部门seo新闻
  • 杭州设计公司招聘上海网站seo
  • iis7 网站权限百度推广上班怎么样
  • 大连网站建设费用爱站之家