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

建设一个网站思路网络电商培训课程网站设计

建设一个网站思路,网络电商培训课程网站设计,ao主题wordpress,外文网站制作1. 背景 java8中默认使用parallel scavenge parallel old的组合。当然我们也可使用parnew cms或g1的方案。 在实际应用过程中,如果ygc和fgc都比较少,如ygc一天几次或者一小时几次,其实我们都不用关心垃圾回收器的选型。因为垃圾回收器的改…

1. 背景

java8中默认使用parallel scavenge + parallel old的组合。当然我们也可使用parnew + cms或g1的方案。
在实际应用过程中,如果ygc和fgc都比较少,如ygc一天几次或者一小时几次,其实我们都不用关心垃圾回收器的选型。因为垃圾回收器的改变带来的性能提升几乎可以忽略。
然而,在大流量高并发场景下,如果一分钟出现1次或者多次ygc的话,那么我们评估使用场景,选择合适的垃圾回收器就显得更有价值。
另外,其实在实际应用过程中很少会出现fgc的情况,即使大流量的服务,基本都是在执行ygc,有时候可能几天才会出现一次fgc甚至很久都不出现。而且,线上活跃的应用一般都会持续迭代,可能3/5天上线一次,每次服务发布,之前积压的内存就清理了,几乎不会触发fgc。

2. 对比

接下来我们对比一下上述三种搭配的适用场景:

2.1 parallel scavenge+ parallel old

启动参数:-XX:+UseParallelGC(新生代)和 -XX:+UseParallelOldGC(老年代),一般默认,不用手动配置。

特点:

多线程并行回收新生代(Parallel Scavenge)和老年代(Parallel Old)。
默认以最大化吞吐量(应用运行时间占比)为目标。
适合多核服务器环境,但对延迟敏感的应用可能不友好。

适用场景:后台计算密集型任务(如批处理),不追求低延迟。

实战示例:8C16G机器

-Xms8192m
-Xmx8192m
-XX:MaxMetaspaceSize=512m
-XX:MetaspaceSize=512m
-XX:MaxDirectMemorySize=1024m
-XX:ConcGCThreads=4
-XX:ParallelGCThreads=8
-Xmn4096m
-XX:CICompilerCount=3
-XX:+UnlockExperimentalVMOptions
-XX:+ParallelRefProcEnabled
-XX:+HeapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime
-Xloggc:/export/Logs/xxx/gc.log
-XX:GCLogFileSize=1024M
-XX:+HeapDumpAfterFullGC
-XX:HeapDumpPath=/export/Logs/xxx/fgcdump.log

2.2 parnew + cms

启动参数:-XX:+UseConcMarkSweepGC,需要手动配置,同时还需要其他参数,后文列出。

特点:

老年代使用并发标记清除算法,尽量减少停顿时间。
新生代默认使用ParNew回收器(多线程)。
通过并发标记减少STW时间,但存在内存碎片问题。
注意:Java 8中仍可用,但在后续版本(Java 9+)被标记为废弃(Deprecated),最终在Java 14中被移除。

适用场景:对延迟敏感的中大型应用(如Web服务)。
搭配参数:

参数含义示例
-XX:ParallelGCThreads并行GC线程的数量(ncpu <= 8 : ParallelGCThreads = ncpus,ncpu > 8 : 8 + (ncpus - 8) ( 5/8 ))-XX:ParallelGCThreads=8
-XX:+UseParNewGC年轻代使用ParNew-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC老年代使用CMS-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabledJVM会在CMS的并发标记阶段(Concurrent Marking Phase)触发类卸载,释放不再使用的类元数据占用的内存-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSInitiatingOccupancyOnly只用设定的回收阈值,如果不指定,JVM仅在第一次使用设定值,后续则自动调整-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction老年代允许的最大使用率,达到则触发old gc-XX:CMSInitiatingOccupancyFraction=75
-XX:+CMSParallelRemarkEnabled在CMS GC前启动一次ygc,目的在于减少old gen对ygc gen的引用,降低remark时的开销,一般CMS的GC耗时 80%都在remark阶段-XX:+CMSParallelRemarkEnabled
-XX:CICompilerCount热点编译器线程数(2 + int(max(0, cpu_core_num - 2) * 0.25)最低2核,超出2核的部分拿出25%来热点编译)-XX:CICompilerCount=3
-XX:ConcGCThreadsCMS下是(ParallelGCThreads + 3) / 4 向下取整, G1下是ParallelGCThreads / 4-XX:ConcGCThreads=4

实战示例:8C16G机器

-Xms8192m
-Xmx8192m
-XX:MaxMetaspaceSize=512m
-XX:MetaspaceSize=512m
-XX:MaxDirectMemorySize=1024m
-XX:ConcGCThreads=4
-XX:ParallelGCThreads=8
-Xmn4096m
-XX:CICompilerCount=3
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+UnlockExperimentalVMOptions
-XX:+CMSClassUnloadingEnabled
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=75
-XX:+ExplicitGCInvokesConcurrent
-XX:+ParallelRefProcEnabled
-XX:+CMSParallelRemarkEnabled
-XX:+HeapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime
-Xloggc:/export/Logs/xxx/gc.log
-XX:GCLogFileSize=1024M
-XX:+HeapDumpAfterFullGC
-XX:HeapDumpPath=/export/Logs/xxx/fgcdump.log

2.3 g1

启动参数:-XX:+UseG1GC,需要手动配置,同时还需要其他参数,后文列出。

特点:

将堆划分为多个区域(Region),优先回收垃圾最多的区域。
可预测的停顿时间模型,支持大堆(数十GB到上百GB)。
混合了标记-整理和复制算法,减少内存碎片。
注意:Java 7u4引入,Java 9+成为默认回收器。

适用场景:需要平衡吞吐量和延迟的大型应用(如企业级服务)。
搭配参数(cms体系中描述过的这里不再赘述,见示例):

参数含义示例
-XX:+UseG1GC使用G1垃圾回收器-XX:+UseParNewGC
-XX:MaxGCPauseMillis设置 G1 的暂停时间目标。这会告诉 G1 试图将 GC 暂停时间控制在指定的毫秒数内-XX:MaxGCPauseMillis=50
-XX:G1HeapRegionSize设置 G1 的堆区域大小。堆被划分为多个区域(Region),G1 GC 在这些区域上进行垃圾收集。设置合适的区域大小可以帮助提高垃圾回收效率。()-XX:G1HeapRegionSize=16m

实战示例:8C16G机器

-Xms8192m
-Xmx8192m
-XX:MaxMetaspaceSize=512m
-XX:MetaspaceSize=512m
-XX:MaxDirectMemorySize=1024m
-Xmn4096m
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=8
-XX:CICompilerCount=3
-XX:+UseG1GC
-XX:MaxGCPauseMillis=50
-XX:+UnlockExperimentalVMOptions
-XX:+ParallelRefProcEnabled
-XX:+HeapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationStoppedTime
-Xloggc:/export/Logs/xxx/gc.log
-XX:GCLogFileSize=1024M
-XX:+HeapDumpAfterFullGC
-XX:HeapDumpPath=/export/Logs/xxx/fgcdump.log

3. 总结

后台计算密集型任务(如批处理),不追求低延迟。场景下使用默认配置,即parallel scavenge + parallel old。对延迟敏感的中大型应用(如Web服务)使用parnew + cms。需要平衡吞吐量和延迟的大型应用(如企业级服务)使用g1。
C端高并发应用优先考虑parnew + cms 或 g1,但具体的选型还需根据实际场景评估,如果很难评估的情况下,可以同分组内A B两台机器,上线后观察分析gc日志以及在流量高峰期的cpu表现。

http://www.dtcms.com/wzjs/585714.html

相关文章:

  • 遂宁市城市建设档案馆网站展厅设计要考虑哪些方面
  • 做办公用品网站资料怎么收集众筹 wordpress
  • 做网站简单需要什么软件越秀网站建设哪家好
  • 个人网站多少钱一年汕头 网站
  • 鲅鱼圈企业网站建设郑州正规的网站建设价格
  • 网站制作公司制作网站的流程是怎样的呢北京装饰装修公司
  • 用什么软件做网站设计大学网站建设排名
  • 龙海市建设局网站网站根目录
  • 装修公司网站dede模板王占山战斗英雄简历
  • 南宁百度网站公司吗网页设计基础课程设计
  • 题材挖掘机网站怎么做哈尔滨公司网页制作
  • wordpress设置语言厦门做网站优化
  • 国外男女直接做的视频网站mysql做wp网站
  • 宿州企业网站建设做介绍英文网站
  • 如何给wordpress添加网站图标做网站原则
  • 泰安市人才招聘网郑州网站优化公司排名
  • 西安h5网站建设哪里有免费的网站模板下载软件
  • 做wish如何利用数据网站网络营销策划方案1500字
  • 中国做的比较好的网站设计公司有哪些做淘宝美工需要知道的网站
  • 专业网站建设空间asp网站后台下载
  • 网站内容排版设计开源的wordpress
  • 网站上线前的准备国外扁平化网站设计欣赏
  • 做英文网站赚钱西安网站建设熊掌号
  • 做搜狗网站优化排名乐清市网站建设哪家性价比高
  • 中学网站模板网站维护简单吗
  • 青龙建站教程单位网站建设ppt
  • 人人做免费网站做包装一般看什么网站
  • 如何防止网站被盗运城公司网站建设
  • 成都营销型网站建设公司中国执行信息公开网官网
  • seo优化网站的手段企?I网站建站 ?V州 ??l