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

网站开发需要哪些技术专题网站建设

网站开发需要哪些技术,专题网站建设,wordpress怎么填写关键词,广州开发app文章目录 Pre1. 引言#xff1a;Java版本演进与GC演变背景2. 查看JVM参数默认值的方法3. 基于ElasticSearch的JVM参数示例分析3.1 堆空间配置与AlwaysPreTouch3.2 堆外内存细分3.3 GC日志配置#xff08;Java 8 vs Java 9#xff09;3.4 OOM时Dump配置3.5 垃圾回收器配置Java版本演进与GC演变背景2. 查看JVM参数默认值的方法3. 基于ElasticSearch的JVM参数示例分析3.1 堆空间配置与AlwaysPreTouch3.2 堆外内存细分3.3 GC日志配置Java 8 vs Java 93.4 OOM时Dump配置3.5 垃圾回收器配置CMS示例及迁移3.6 其他额外参数 4. 常见GC器演进与配置要点4.1 CMS生命周期与参数4.2 G1配置要点4.3 ZGC、Shenandoah简介4.4 其他GCSerial、Parallel等 5. 深入调优分代比例、SurvivorRatio、TenuringThreshold等6. 小结与建议 Pre 性能优化 - 理论篇常见指标及切入点 性能优化 - 理论篇性能优化的七类技术手段 性能优化 - 理论篇CPU、内存、I/O诊断手段 性能优化 - 工具篇常用的性能测试工具 性能优化 - 工具篇基准测试 JMH 性能优化 - 案例篇缓冲区 性能优化 - 案例篇缓存 性能优化 - 案例篇数据一致性 性能优化 - 案例篇池化对象_Commons Pool 2.0通用对象池框架 性能优化 - 案例篇大对象的优化 性能优化 - 案例篇使用设计模式优化性能 性能优化 - 案例篇并行计算 性能优化 - 案例篇多线程锁的优化 性能优化 - 案例篇CAS、乐观锁、分布式锁和无锁 性能优化 - 案例篇 详解 BIO NIO AIO 性能优化 - 案例篇 19 条常见的 Java 代码优化法则 性能优化 - 案例篇JVM垃圾回收器 性能优化 - 案例篇JIT 性能优化 - 案例篇11种优化接口性能的通用方案 1. 引言Java版本演进与GC演变背景 Java 8长期以来是企业主力版本很多公司因稳定性和兼容性选择Java 8并启用CMS垃圾回收器。但从Java 9开始进入半年一版的快速发布模式Java 8与Java 11成为LTS版本后续LTS如Java 17、Java 21等陆续推出([en.wikipedia.org][1], [preemptive.com][2])。 随着JVM内部不断演进CMS在Java 9中被标记为Deprecated并于Java 14正式移除见JEP 363([openjdk.org][3], [oracle.com][4])。新GC器如G1、ZGC、Shenandoah成熟逐渐成为主流选择。 因此在不同JVM版本上配置GC参数需先查看默认值不要盲从他人建议。 2. 查看JVM参数默认值的方法 可以使用以下命令查看参数的默认值和当前生效参数 java -XX:PrintFlagsFinal -XX:UseG1GC 21 | grep UseAdaptiveSizePolicy上述命令在启动时列出所有Flags的最终值通过grep过滤目标参数。常见用法还有 java -XX:PrintCommandLineFlags -version输出示例Java 8默认Parallel GC -XX:InitialHeapSize127905216 -XX:MaxHeapSize2046483456 -XX:PrintCommandLineFlags -XX:UseCompressedClassPointers -XX:UseCompressedOops -XX:UseParallelGC openjdk version 1.8.0_41 ...通过这些命令可确认某个参数是否已有默认值避免重复配置或无效配置。 3. 基于ElasticSearch的JVM参数示例分析 ElasticSearchES作为典型Java应用其jvm.options提供了常见配置案例便于学习和参考。 3.1 堆空间配置与AlwaysPreTouch ES常见配置 -Xms1g -Xmx1g -XX:AlwaysPreTouch将-Xms与-Xmx设为相同值可避免动态扩容开销。在堆较大时-XX:AlwaysPreTouch会在JVM启动时触碰touch所有堆页面提前向操作系统申请并锁定内存页增加启动时间但减少运行时动态分配时的性能损耗提高稳定性和吞吐([docs.oracle.com][5])。 对于存储型服务如ES通常将堆设置为物理内存一半以留一半给操作系统文件缓存PageCache提高I/O效率对于计算型Web服务可将堆设置为物理内存2/3剩余1/3供直接内存、本地内存等使用。 JVM内存布局堆与堆外细分、PageCache与JVM堆的关系。 堆外包含元空间、CodeCache、直接内存、本地内存线程栈、网络缓冲等及JNI分配等。 3.2 堆外内存细分 元空间Metaspace通过-XX:MetaspaceSize和-XX:MaxMetaspaceSize可指定初始化与上限默认无上限可能导致过度使用系统内存建议根据应用类加载行为适当设置上限。JIT编译后代码存放 CodeCacheJIT编译后代码存储区通过-XX:ReservedCodeCacheSize设置上限若CodeCache满会触发Full GC或影响性能。直接内存Direct MemoryByteBuffer等直接缓冲区申请内存通过-XX:MaxDirectMemorySize限制防止内存占用过大。本地内存Native Memory线程栈、JNI malloc、网络连接缓冲等无法由JVM直接控制但需关注高并发场景下的本地内存消耗。JNI内存依赖具体JNI实现JVM无法控制但应避免JNI库出现内存泄漏。 3.3 GC日志配置Java 8 vs Java 9 在Java 8中常用GC日志参数以ES为例 -XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintTenuringDistribution -XX:PrintGCApplicationStoppedTime -XX:-Xloggc:logs/gc.log -XX:UseGCLogFileRotation -XX:NumberOfGCLogFiles32 -XX:GCLogFileSize64m这些参数可打印GC细节、时间戳(系统时间)、年龄分布、STW停顿时间并配置日志滚动([docs.oracle.com][5])。 Java 9移除40多个GC日志参数采用Unified Logging -Xlog:gc*,gcagetrace,safepoint:filelogs/gc.log:utctime,pid,tags:filecount32,filesize64m此方式更统一、灵活可通过jcmd动态调整([foojay.io][6])。 3.4 OOM时Dump配置 ES常见 -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPathdata -XX:ErrorFilelogs/hs_err_pid%p.log发生OOM时自动生成堆转储文件用于后续MAT等工具分析问题根因。正常可使用jmap等命令获取堆快照但生产环境优先配置自动Dump。 3.5 垃圾回收器配置CMS示例及迁移 ES默认曾使用CMS -XX:UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction75 -XX:UseCMSInitiatingOccupancyOnlyUseConcMarkSweepGC表示Young代用ParNewOld代用CMS。CMSInitiatingOccupancyFraction设定启动并发标记的老年代占用阈值避免Concurrent Mode Failure需配合UseCMSInitiatingOccupancyOnly生效。 另外对于 CMS 垃圾回收器常用的还有下面的配置参数 -XX:ExplicitGCInvokesConcurrent -XX:CMSFullGCsBeforeCompaction0 -XX:CMSScavengeBeforeRemark -XX:ParallelRefProcEnabled-XX:ExplicitGCInvokesConcurrent 当代码里显示的调用了 System.gc()实际上是想让回收器进行FullGC如果发生这种情况则使用这个参数开始并行 FullGC。建议加上。 -XX:CMSFullGCsBeforeCompaction 默认为 0就是每次FullGC都对老年代进行碎片整理压缩建议保持默认。 -XX:CMSScavengeBeforeRemark 开启或关闭在 CMS 重新标记阶段之前的清除YGC尝试。可以降低 remark 时间建议加上。 -XX:ParallelRefProcEnabled 可以用来并行处理 Reference以加快处理速度缩短耗时。 但CMS在Java 14已移除不可再用应转向G1或更现代GC([blog.gceasy.io][7])。 3.6 其他额外参数 -Xss1m设置线程栈大小为1MB默认即1MB可根据线程数和调用深度适当调整。-XX:-OmitStackTraceInFastThrowES关闭此项以便调试异常开启可合并重复异常栈以提高性能但调试困难。-Djava.awt.headlesstrue服务器无GUI时需设置Headless模式避免AWT初始化失败。其他-D参数如-Dfile.encodingUTF-8、-Des.networkaddress.cache.ttl60等根据应用需求配置网络、编码、临时目录、日志框架等。 4. 常见GC器演进与配置要点 4.1 CMS生命周期与参数 CMS自Java 1.4.1起被引入目标低延迟但不压缩老年代容易产生碎片、发生Concurrent Mode Failure导致长STW。Java 9开始DeprecatedJava 14移除JEP 363([openjdk.org][3], [oracle.com][4])。建议迁移至G1等。 4.2 G1配置要点 G1自Java 7u14实验性引入Java 9起默认GC。优点并发标记、分区回收、自动压缩提供MaxGCPauseMillis目标设置。常见参数 -XX:UseG1GC-XX:MaxGCPauseMillis期望毫秒-XX:G1HeapRegionSize2的幂默认通常合适不建议轻易修改-XX:InitiatingHeapOccupancyPercent启动并发标记阈值默认45%-XX:ConcGCThreads默认即可 G1无需手动设置-Xmn自动调优分代大小可通过打印日志分析GC行为调整Pause目标和Region大小。 4.3 ZGC、Shenandoah简介 ZGCJava 11实验性Java 15生产就绪面向超大堆和低停顿通常10ms。使用-XX:UseZGC启用需JDK对应版本支持。Shenandoah类似目标Java 12实验Java 15成熟。 这些GC适用于大内存、低延迟场景但需确认应用和平台支持。 4.4 其他GCSerial、Parallel等 Serial GC-XX:UseSerialGC小堆、单线程场景。Parallel GC-XX:UseParallelGC / UseParallelOldGC追求吞吐适合批处理。 选择需根据应用类型交互型、批处理、超大堆等决定。 5. 深入调优分代比例、SurvivorRatio、TenuringThreshold等 -Xmn调整年轻代大小G1一般无需在Parallel或CMS可根据业务调整若对象存活率低可加大年轻代。-XX:SurvivorRatioEden和Survivor区比例默认8可根据对象晋升行为调整。-XX:MaxTenuringThreshold对象晋升阈值CMS下默认6G1下默认15可通过-XX:PrintTenuringDistribution观察年龄分布若早期代晋升过多适当降低阈值若大多数对象在Survivor区很快死亡适当增大可减少晋升压力。PretenureSizeThreshold大对象直接分配到老年代使用少见。 通过GC日志分析或可视化工具如GCViewer、GCEasy观察GC停顿、年轻代/老年代使用情况再针对性调整。 6. 小结与建议 在不同JVM版本和GC器上先查看默认参数不要盲信旧配置根据应用类型存储、计算、低延迟、高吞吐选择合适堆大小及GC器通过-XX:PrintCommandLineFlags、PrintFlagsFinal、-Xlog或旧日志参数查看生效配置合理配置元空间、CodeCache、直接内存等防止本地内存耗尽配置GC日志和OOM自动Dump便于问题排查CMS已废弃迁移至G1或更现代GC深入调优需结合GC日志分析工具进行调整分代比例、停顿目标、并发线程数等在生产环境中小幅、渐进式调整观察效果。 [1]: https://en.wikipedia.org/wiki/Java_version_history?utm_sourcechatgpt.com Java version history [2]: https://www.preemptive.com/blog/the-road-to-java-9/?utm_sourcechatgpt.com The Road to Java 9 - PreEmptive Solutions [3]: https://openjdk.org/jeps/363?utm_sourcechatgpt.com JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage ... [4]: https://www.oracle.com/java/technologies/javase/14-relnote-issues.html?utm_sourcechatgpt.com JDK 14 Release Notes - java - Oracle [5]: https://docs.oracle.com/en/java/java-components/enterprise-performance-pack/epp-user-guide/printing-jvm-information.html?utm_sourcechatgpt.com 3 Printing JVM Information - Java - Oracle Help Center [6]: https://foojay.io/today/introduction-to-jvm-unified-logging-jep-158-jep-271/?utm_sourcechatgpt.com Introduction to JVM Unified Logging (JEP-158 / JEP-271) - Foojay.io [7]: https://blog.gceasy.io/cms-gc-algorithm-removed-from-java-14/?utm_sourcechatgpt.com CMS GC algorithm removed from Java 14?
http://www.hkea.cn/news/14470887/

相关文章:

  • 如何运用链接推广网站网站搭建网站制作
  • 互联网网站商标武进网站建设好么
  • wordpress 找不到文件路径合肥百度推广优化
  • 如何制作免费的公司网站淘宝上的网站建设
  • 男女做暖暖的试看网站酥酥影视7网站建设1
  • 乐辰网站建设做的视频发到哪个网站好
  • 商家在网站做淘宝客会给佣金吗广州深圳做网站
  • 中国建设银行洛阳分行网站酒店网站建设描述
  • 贵州网站建设价格自己搭建公网ip服务器
  • 如何进行网站管理用wordpress当wiki
  • 江岸区建设局网站wordpress表情按钮
  • 如何介绍网站模板下载重庆互联网公司排行榜
  • 美文的手机网站新闻类网站怎么做百度推广
  • 建设网站的技术手段个人主页网站制作免费
  • 易班网站的建设内容网络营销方案模板
  • 校园网站开发方案长沙网站建设哪个公司好
  • 网站开发后台数据库怎么搞网站建设ktv
  • 南宁网站建设公司业绩深圳公司画册设计
  • 网站建设情况存在问题wordpress增加主题更新
  • 网站建设 网络科技公司够完美网站建设
  • 西青网站建设现在网站做多宽
  • 横沥网站设计昆明优化官网服务
  • 门户网站网站建设wdcp 网站打不开
  • 做海报挣钱的网站广告公司简历模板
  • 网站如何换域名网站空间到期了
  • 投资理财网站建设规划书改图网在线制作图片
  • 免费网站建网址建设
  • 北京做网站价格傻瓜式一键建站系统
  • 做淘宝客网站多少钱制作网页可以用word吗
  • wordpress后台修改前段seo网站推广收费