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

网站建设市场分析报告个人网站模板flash

网站建设市场分析报告,个人网站模板flash,做公司网页步骤,网站建设的问题在 Java 应用程序的开发和维护过程中#xff0c;性能监控和故障诊断是至关重要的。本文将详细介绍三款常用的 Java 性能监控工具#xff1a;JConsole、VisualVM 和 Java Mission Control#xff08;JMC#xff09;#xff0c;并探讨它们的功能和使用方法。 1 JConsole 1…在 Java 应用程序的开发和维护过程中性能监控和故障诊断是至关重要的。本文将详细介绍三款常用的 Java 性能监控工具JConsole、VisualVM 和 Java Mission ControlJMC并探讨它们的功能和使用方法。 1 JConsole 1.1 简介 JConsoleJava Monitoring and Management Console是一款基于 JMXJava 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.portPORT -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse其中PORT 是 JMX 代理监听的端口号authenticatefalse 表示不需要身份验证sslfalse 表示不使用 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 {ListOOMObject list new ArrayListOOMObject();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 VisualVMAll-in-One Java Troubleshooting Tool是一款集性能监控、故障诊断和分析于一体的工具。它不仅能够监控 Java 应用程序的运行状态还支持生成堆转储快照、分析 CPU 和内存使用情况等功能。 2.1 安装与启动 2.1.1 下载与安装 VisualVM 的安装非常简单访问其官方网站 https://visualvm.github.io 下载适合您操作系统的版本。安装完成后启动 VisualVM界面如下所示 2.1.2 插件功能 VisualVM 支持插件扩展用户可以通过以下步骤安装插件 点击菜单栏中的 Tools - Plugins。在可用插件列表中选择需要的插件点击安装。 插件功能极大地扩展了 VisualVM 的能力例如支持更多的监控指标、分析工具等。 2.2 生成与浏览堆转储快照 堆转储快照Heap Dump是分析内存问题的重要工具。VisualVM 提供了两种生成堆转储快照的方式 2.2.1 方式一右键生成 在应用程序面板中右键点击目标应用程序。选择 Heap DumpVisualVM 会自动生成堆转储快照。 2.2.2 方式二监视面板生成 在应用程序面板中选择目标应用程序。在“监视”面板中点击 Heap Dump 按钮。 2.2.3 保存堆转储快照 生成的堆转储快照默认是临时文件关闭 VisualVM 后会被自动清理。如果需要保存快照文件可以 在 heapdump 节点上右键点击。选择 另存为将堆转储快照保存到本地。 2.3 分析程序性能 VisualVM 提供了强大的性能分析功能可以帮助开发者深入了解应用程序的 CPU 和内存使用情况。 2.3.1 CPU 分析 在 分析 profiler 面板中点击 CPU 按钮。VisualVM 会开始记录应用程序执行的所有方法。返回应用程序进行操作操作结束后点击 停止 按钮。分析结果会显示每个方法的执行次数和执行耗时。 2.3.2 内存分析 在 分析 profiler 面板中点击 Memory 按钮。VisualVM 会开始记录应用程序的内存分配情况。返回应用程序进行操作操作结束后点击 停止 按钮。分析结果会显示每个方法的内存分配情况。 3. Java Mission Control (JMC) JMC 是一款集性能监控、故障诊断和分析于一体的工具适用于 Java 应用程序的开发和生产环境。它提供了丰富的功能包括 MBean 服务器监控、飞行记录器JFR等能够帮助开发者深入分析应用程序的性能问题。 GitHub 地址https://github.com/openjdk/jmc官方下载https://jdk.java.net/jmc/8/ 3.1 安装与启动 访问 https://jdk.java.net/jmc/8/ 下载 JMC。解压下载的文件启动 JMC。 启动后的界面如下所示 3.2 MBean 服务器 MBeanManaged Bean是 Java 管理扩展JMX的一部分用于管理 Java 应用程序。通过 JMC 的 MBean 服务器功能可以监控以下信息 Java 堆使用率显示堆内存的使用情况。CPU 使用率显示应用程序的 CPU 占用情况。Live Set FragmentationLive Set 表示存活对象的大小Fragmentation 表示内存碎片的大小。 3.3 飞行记录器Flight Recorder, JFR 飞行记录器JFR是 JMC 提供的一项强大功能能够记录应用程序在一段时间内的运行情况并进行分析和展示。JFR 提供的数据质量通常比其他工具通过代理形式采样获得的更高。 3.3.1 启用 JFR 要使用 JFR需要在启动 Java 程序时添加以下参数 -XX:UnlockCommercialFeatures -XX:FlightRecorder3.3.2 使用 JFR 进行性能记录 连接已启用 JFR 的 Java 程序。启动飞行记录器设置记录时间例如 1 分钟。记录结束后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);ListBigDecimal 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. 第三方工具 除了上述官方工具外还有一些第三方工具也非常有用 MATMemory Analyzer ToolJava 堆内存分析工具。GChistoGC 日志分析工具。GCViewerGC 日志分析工具。JProfiler商用的性能分析利器。Arthas阿里开源诊断工具。async-profilerJava 应用性能分析工具支持火焰图和跨平台。 5. 总结 本文介绍了三款常用的 Java 性能监控工具JConsole、VisualVM 和 Java Mission Control。它们各自具有独特的功能和优势能够帮助开发者更好地监控和诊断 Java 应用程序的性能问题。在实际开发中可以根据具体需求选择合适的工具并结合第三方工具进行更深入的分析和优化。 通过合理使用这些工具开发者可以更高效地定位和解决性能瓶颈确保 Java 应用程序的稳定运行。 6 思维导图 7 参考链接 JVM 性能监控工具之可视化篇
http://www.hkea.cn/news/14404809/

相关文章:

  • 网站建设做软件开发吗公司网站建设项目的成本计划
  • 网站做次级页面网站流量所需的成本.
  • 大型门户网站建设流程上海企业网站建设推荐
  • 宝安附近做网站公司公司做营销型网站
  • 做一视频网站多少钱台州网站建设多少钱
  • 网站关键词公司找做网站公司需要注意什么条件
  • 成都网站建设_创新互联惠州做网站的公司哪家好
  • 游戏币网站建设wordpress支付文件在哪
  • 网站建设心得体会范文响应式网站pad尺寸
  • 网站建设教程科普织梦网站问题
  • 网上怎么查自己是不是团员展示型网站可以优化吗
  • 个人网站建设源代码推广软件公司
  • 建设企业网银交易密码是什么广安seo
  • 上住房和城乡建设部网站2022营业执照年审
  • 彩票网站建设服务海外短视频软件
  • 彩票系统网站开发做外贸不能访问国外网站怎么办
  • 教育教学成果展示网站建设自己做网站能赚钱
  • iis6.1的网站建设及权限设置关键词排名优化外包
  • 网站设计专家营销型企业、公司网站案例
  • 网站logo一般多大百度软件中心
  • 英文网站外链查询中国商业数据网
  • 加强企业网站建设苏州大学网站建设目标
  • 潍坊网站制作保定公司网站如何做一张轮播图
  • 邵阳专业网站设计宜昌营销型网站建设
  • 网站seo工作免费网站建设魔坊
  • 网站建设及维护费用新云网站模版
  • 零售网站制作数字创意设计包括哪些工具
  • 地方门户网站资讯该怎么做临沂网站建设教程
  • 苏州专业做网站比较好的公司域名如何连接wordpress
  • 用word做旅游网站网页搭建服务平台