b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

通过BAT强制考试系列: JVM性能调优的6个步骤,以及关键调优参数的详细说明

电脑杂谈  发布时间:2020-08-17 13:04:45  来源:网络整理

jvm 内存参数 调整_jvm内存调整_jvm内存参数单位

JVM系列

通过BAT强制性考试系列: JVM垃圾收集器的7个功能,优缺点和使用场景

通过BAT强制考试系列: 4种垃圾收集算法,垃圾收集机制和JVM总结

通过BAT强制考试系列: JVM内存模型和JVM参数配置的深入详细说明

JVM内存调整

对JVM内存进行系统级调整的主要目的是减少GC的频率和Full GC的数量.

1. 完整GC

整个堆将被排序,包括Young,Tenured和Perm. Full GC速度很慢,因为它需要回收整个堆,因此应尽可能减少Full GC的数量.

2. 启用GC的原因

1)终身代已满

jvm内存调整_jvm 内存参数 调整_jvm内存参数单位

调整时,请尝试让对象在年轻一代的GC中回收,让这些对象在年轻一代中生存更长的时间,并且不要创建太大的对象和数组,以免直接在对象中创建对象. 老一辈.

2)空间不足,无法持续生成Pemanet

增加Perm Gen空间,避免过多的静态对象,并控制年轻一代与老一代的比例

3)明确调用System.gc()

请勿手动触发垃圾回收,请尝试依赖JVM自身的机制

在调整JVM的过程中,大部分工作是对FullGC的调整. 下面详细描述了相应的JVM调整方法和步骤.

JVM性能调整方法和步骤

1. 监视GC的状态

根据每个区域的实际内存划分和GC执行时间,使用各种JVM工具查看当前日志,分析当前JVM参数设置以及分析当前堆内存快照和gc日志,是否进行优化.

一个例子: 系统崩溃之前的一些现象:

jvm内存调整_jvm 内存参数 调整_jvm内存参数单位

此后,系统将无法响应新请求,并将逐渐达到OutOfMemoryError的临界值. 这时,有必要分析JVM内存快照转储.

2. 生成堆转储文件

通过JMX MBean生成当前的堆信息. 该大小是3G(整个堆的大小)hprof文件. 如果未启动JMX,则可以使用Java jmap命令生成文件.

3. 分析转储文件

打开此3G堆信息文件. 显然,普通的Window系统没有这么大的内存. 必须借助高配置Linux和一些工具将其打开:

注意: 文件太大. 建议使用Eclipse的特殊静态内存分析工具Mat打开分析.

4. 分析结果并确定是否需要优化

如果参数设置合理,系统没有超时日志,GC频率不高以及GC时间不高,则无需优化GC. 如果GC时间超过1-3秒或频繁使用GC,则必须对其进行优化.

注意: 如果满足以下指标,则通常不需要GC:

5. 调整GC类型和内存分配

如果内存分配太大或太小,或者使用的GC收集器速度很慢,则应首先调整这些参数,并首先找到一台或几台用于beta的计算机,然后将优化的计算机与未优化的计算机进行比较. 机器的性能,并做出有针对性的最终选择.

jvm内存参数单位_jvm 内存参数 调整_jvm内存调整

6. 不断的分析和调整

通过不断的反复试验,分析并找到最合适的参数. 如果找到最合适的参数,则这些参数将应用于所有服务器.

cms参数优化步骤过程

让我继续介绍JVM的关键参数配置(仅供参考).

JVM调整参数参考

1. 关于JVM堆设置,最小值和最大值通常可以由-Xms -Xmx限制. 为了防止垃圾收集器在最小和最大之间缩小堆并产生额外的时间,通常将最大值和最小值设置为相同的值;

2. 年轻一代和老一代将根据默认比率(1: 2)分配堆内存. 可以通过调整两者之间的比例NewRadio或生成集合来调整两者之间的大小.

例如对于年轻一代,通过-XX: newSize -XX: MaxNewSize设置绝对大小. 同样,为了防止年轻一代缩小堆,我们通常将-XX: newSize -XX: MaxNewSize设置为相同大小.

3. 将年轻一代和老一代设为合理是合理的

1)较大的后代将不可避免地导致较小的后代. 年轻的一代将延长普通GC的期限,但会增加每个GC的时间;小的后代会导致更频繁的Fulls GC

jvm内存参数单位_jvm内存调整_jvm 内存参数 调整

2)较小的年轻一代将不可避免地导致较大的老年一代,较小的年轻一代将导致普通GC的出现非常频繁,但是每个GC的时间将缩短. 大型的后代将减少Full GC的频率

如何选择应取决于应用程序对象生命周期的分布: 如果应用程序具有大量临时对象,则应选择较大的年轻代;如果存在较多的持久对象,则应适当增加旧一代. 但是许多应用程序没有这种明显的特征.

选择应基于以下两点:

(1)遵循尽可能少的Full GC的原则,让旧一代缓存尽可能多的常用对象. JVM的默认比率是1: 2.

(2)通过观察一段时间的应用程序,以查看其他老一代在高峰时间将占用多少内存,而不影响Full GC,例如,根据实际情况增加年轻一代,例如,您可以将比例控制为1: 1. 但是,至少有1/3的增长空间应该留给老一辈.

4. 在配置良好的计算机(例如多核,大内存)上,您可以为旧版本选择并行收集算法: -XX: + UseParallelOldGC.

5. 线程堆栈设置: 默认情况下,每个线程将打开1M堆栈以存储堆栈帧,调用参数,局部变量等. 对于大多数应用程序,此默认值太大,通常256K即可.

理论上,在内存相同的情况下,减少每个线程的堆栈可以生成更多的线程,但这实际上受操作系统的限制.

更多高并发架构设计主题

如何获取信息

跟随+转发后,可以获得私密消息关键字[高并发性!]


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-300847-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...