做网站用html还是php建设工程竣工竣工档案网站

张小明 2026/1/11 9:18:06
做网站用html还是php,建设工程竣工竣工档案网站,温州网站建设制作设计公司,织梦网站源码找一品资源本文采用 “理论阐述 → JConsole验证 → 实战分析” 的三段式结构#xff0c;确保每个抽象概念都能通过可视化工具得到直观验证。第一部分#xff1a;JConsole入门与环境准备 1.1 JConsole简介与启动 JConsole是JDK自带的图形化监控工具#xff0c;可以实时监控JVM内存、线…本文采用“理论阐述 → JConsole验证 → 实战分析”的三段式结构确保每个抽象概念都能通过可视化工具得到直观验证。第一部分JConsole入门与环境准备1.1 JConsole简介与启动JConsole是JDK自带的图形化监控工具可以实时监控JVM内存、线程、类加载等情况。启动方式# 方式1直接启动然后连接本地或远程JVMjconsole# 方式2启动时指定目标进程jconsolepid实操步骤1启动演示程序先准备一个演示程序用于后续的监控分析publicclassMemoryMonitorDemo{privatestaticListbyte[]memoryHognewArrayList();publicstaticvoidmain(String[]args)throwsException{System.out.println(演示程序启动PID: ProcessHandle.current().pid());System.out.println(在10秒内打开JConsole并连接此进程...);// 等待JConsole连接Thread.sleep(10000);// 阶段1模拟内存分配simulateMemoryAllocation();// 阶段2模拟GC压力simulateGCPressure();Thread.sleep(30000);// 保持运行以便观察}privatestaticvoidsimulateMemoryAllocation(){for(inti0;i10;i){// 每次分配5MBmemoryHog.add(newbyte[5*1024*1024]);try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}}}privatestaticvoidsimulateGCPressure(){// 创建大量短命对象制造GC压力for(inti0;i1000;i){byte[]shortLivednewbyte[2*1024*1024];// 2MB短命对象// 立即释放引用让对象变成垃圾shortLivednull;if(i%1000){System.gc();// 建议GC但不保证立即执行}}}}编译运行javac-encoding UTF-8MemoryMonitorDemo.java java-Xmx100m-Xms100m-XX:UseG1GCMemoryMonitorDemo第二部分内存结构可视化分析2.1 堆内存结构实战观察理论回顾新生代Eden 2个Survivor区老年代长期存活对象元空间类元数据JDK8JConsole操作步骤启动JConsole并连接演示程序进入内存标签页选择堆内存使用情况下图梳理了程序逻辑、关键内存区域与监控视图的对应关系图1堆内存使用量 (概览)图表含义展示了整个堆内存的使用趋势。程序关联对应程序的两个主要阶段。第一阶段平稳上升执行simulateMemoryAllocation()循环10次每次分配5MB并持有引用。图表中堆内存从低点逐步增长到约 50-60 MB10 * 5MB 程序基础占用这与代码逻辑完全吻合。第二阶段剧烈波动下降执行simulateGCPressure()创建大量2MB的短命对象并立即弃用同时每100次循环建议一次GC。图表呈现剧烈的锯齿状波动这是G1垃圾收集器在工作频繁回收新生成的垃圾对象。最后的陡降至低位是程序运行结束JVM进行最终清理Final GC。图2内存池 “G1 Eden Space”图表含义展示了G1垃圾收集器中年轻代的Eden区使用情况。程序关联绝大部分新创建的对象都会先分配在Eden区。图表中频繁出现的、剧烈的、类似心跳的“锯齿波”正是第二阶段GC压力测试的典型特征。每个“波峰”代表瞬间分配了大量2MB的短命对象byte[] shortLived new byte[2 * 1024 * 1024]紧接着的“波谷”代表一次Young GCG1 Young Generation回收了这些刚变成垃圾的对象。第一阶段的内存分配每次5MB也可能在这里引发数次Young GC但波动不如第二阶段剧烈。图3内存池 “G1 Old Gen”图表含义展示了G1垃圾收集器中老年代的使用情况。程序关联在第一阶段由于您分配的5MB数组被memoryHog这个静态变量持续引用它们是长期存活的对象。因此在几次Young GC后这些对象会从年轻代晋升Promote到老年代。图表中老年代使用量从0开始阶梯式稳步增长正反映了这个过程。在最后阶段程序运行结束静态变量memoryHog失效老年代中的这些对象也不再被引用因此在一次Full GC / Mixed GC中被彻底回收图表线断崖式下跌至0。图4内存池 “G1 Survivor Space”图表含义展示了G1垃圾收集器中年轻代的Survivor区存活区使用情况。程序关联Survivor区用于存放在一次Young GC中存活下来的、但还未达到晋升年龄的对象。您的程序特点决定了很少有对象能在这里长期存活第一阶段的对象会直接晋升到老年代。第二阶段的对象几乎都是“短命”的会在Young GC中被直接回收。因此该图表显示Survivor区的使用量大部分时间极低仅在极少数GC发生时可能有短暂的、少量的占用图表中的小波峰随后很快又被清空或晋升。2.2 非堆内存分析理论回顾方法区/元空间类信息、常量池等代码缓存JIT编译后的本地代码压缩类空间类指针压缩图5非堆内存使用量 (概览)图表含义展示了非堆内存主要是元空间 Metaspace的使用趋势。程序关联非堆内存用于存储类元数据、常量池等。图表显示其使用量在程序运行期间基本保持稳定约11MB在程序最终结束时才被回收骤降至接近0。这符合预期因为您的程序没有动态加载/卸载大量类。图6内存池 “Metaspace”图表含义展示了元空间的使用详情它是图5“非堆内存”的主要组成部分。程序关联与图5解读一致。存储已加载的类信息。您的程序类数量固定所以曲线平稳。程序结束时的下降与图2的非堆内存下降是同一事件。图7 图8内存池 “CodeHeap”图表含义展示了JVM中JIT编译器生成的本地代码的缓存区使用情况。profiled nmethods和non-nmethods是不同编译状态和类型的代码存储区域。程序关联当JVM运行一段时间后JIT编译器会将热点Java字节码编译成本地机器码以提高执行速度。这些编译后的代码就存储在CodeHeap中。图表中出现的波动反映了在程序运行期间JIT编译器在不断工作编译新的方法也可能淘汰一些不常用的编译代码。程序结束时这些内存被一并释放。第三部分GC机制可视化监控3.1 GC算法与回收器选择理论(详细信息可以看我上一篇帖子里面有对理论知识的详细讲解)现代JVM采用分代收集理论不同区域使用不同算法内存区域推荐算法特点适用场景新生代复制算法无碎片高效对象朝生夕死老年代标记-整理空间利用率高对象存活时间长3.2 JConsole中的GC监控启动演示程序时添加GC日志参数java -Xmx100m -Xms100m -XX:UseG1GC -XX:PrintGC -XX:PrintGCDetails -Xloggc:gc.log MemoryMonitorDemoJConsole GC监控操作查看概要页签查看JVM参数和正常运行时间查看内存页签实时观察各内存池变化查看VM摘要了解GC收集器信息实操步骤2GC活动对比实验创建两个终端分别运行不同GC策略的程序终端1G1GCjava -Xmx100m -Xms100m -XX:UseG1GC -XX:PrintGC GCDemo终端2Parallel GCjava -Xmx100m -Xms100m -XX:UseParallelGC -XX:PrintGC GCDemoGCDemo.javapublicclassGCDemo{publicstaticvoidmain(String[]args)throwsException{Listbyte[]listnewArrayList();while(true){// 混合分配大小对象for(inti0;i100;i){list.add(newbyte[1024]);// 1KB小对象}list.add(newbyte[2*1024*1024]);// 2MB大对象Thread.sleep(10);// 模拟对象死亡if(list.size()1000){list.subList(0,500).clear();}}}}观察差异G1GC停顿时间相对均匀增量式回收Parallel GC吞吐量高但停顿时间可能较长第四部分内存泄漏诊断实战4.1 内存泄漏模式识别理论内存泄漏的典型特征是老年代使用率持续上升即使Full GC后也不释放。创建内存泄漏演示publicclassMemoryLeakDemo{privatestaticMapKey,StringcachenewHashMap();staticclassKey{privateStringid;publicKey(Stringid){this.idid;}// 错误没有重写equals和hashCode// 正确的Key应该重写这两个方法}publicstaticvoidmain(String[]args)throwsException{System.out.println(内存泄漏演示开始...);intcount0;while(true){// 每次使用不同的Key对象但逻辑上相同KeykeynewKey(key-(count%100));cache.put(key,value-count);if(count%10000){System.out.println(Cache size: cache.size());System.out.println(内存使用: (Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())/1024/1024MB);}count;Thread.sleep(10);}}}运行java -Xmx50m -Xms50m -XX:HeapDumpOnOutOfMemoryError MemoryLeakDemo4.2 使用JConsole检测内存泄漏诊断步骤监控堆内存趋势在JConsole中观察已使用堆曲线内存泄漏特征锯齿形上升每次GC后最低点都比前一次高执行手动GC测试点击执行GC按钮观察内存回收效果如果无法回收到稳定水平可能存在泄漏分析内存池分布重点观察老年代如果持续增长说明长生命周期对象在积累
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站直接从网上的icon吗网络营销的发展前景

Anaconda配置PyTorch环境全攻略:支持CUDA加速的深度学习开发 在人工智能项目快速迭代的今天,一个稳定、高效且开箱即用的深度学习环境,往往决定了从实验到落地的速度。许多开发者都经历过这样的场景:花费数小时甚至一整天&#xf…

张小明 2025/12/31 12:51:10 网站建设

在线考试网站开发报价wordpress 直排主题

LangFlow:让Zabbix监控迈入智能运维时代 在现代IT环境中,网络设备的稳定性直接关系到业务连续性。Zabbix作为广受青睐的开源监控平台,早已成为无数企业运维体系的核心组件。它能精准捕捉服务器、交换机、路由器等设备的运行指标,但…

张小明 2026/1/10 13:05:26 网站建设

做博客和做网站wordpress编辑器 填满

BLiveChat终极指南:快速配置专业级B站直播弹幕 【免费下载链接】blivechat 用于OBS的仿YouTube风格的bilibili直播评论栏 项目地址: https://gitcode.com/gh_mirrors/bl/blivechat 还在为直播间单调的弹幕效果发愁吗?想要让直播间的互动体验瞬间升…

张小明 2025/12/31 0:44:55 网站建设

asp全静态企业网站北京论坛

Wan2.2-T2V-5B入门指南:快速部署与本地推理教程你有没有过这样的体验?脑子里浮现出一个绝妙的画面——比如“一只橘猫穿着宇航服在月球上弹吉他”,可当你想把它做成视频时,却发现剪辑软件太难上手、外包成本太高、AI工具又慢得像在…

张小明 2026/1/9 18:31:45 网站建设

包装设计的网站做中国旅游网站的目的与必要性

m4s转换器完整指南:如何将B站缓存视频永久保存为MP4格式 【免费下载链接】m4s-converter 将bilibili缓存的m4s转成mp4(读PC端缓存目录) 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 还在为B站视频突然下架而烦恼吗?m4s转换器是一…

张小明 2026/1/2 20:19:07 网站建设

厦门市建设合同备案网站深圳市罗湖网站建设

FreeIPA与Active Directory集成技术解析 1. 识别外部用户 当信任关系建立且运行良好,同时创建了适当的组后,我们就能够识别映射组中来自 VENTANAS.LOCAL 域的外部用户。可以使用 id 命令来查看用户信息,示例如下: [root@quebec ~]# id Administrator@VENTANAS.LOCAL …

张小明 2025/12/31 15:29:27 网站建设