JVM参数调优

1.什么是 JVM 调优。

应用程序优化考虑所有性能层-链接
在规划 JVM 性能调优之前你需要了解什么。

2.JVM主要参数。

当涉及到 Java 程序时,为了确保它们以最佳性能运行,必须缩小代码与其所运行的虚拟机(如果有)之间的资源差距。实现这一点的方法是查看并特别调优 Java 虚拟机 (JVM)。然而,说起来容易做起来难。

许多因素都会影响 JVM 的整体性能,在进行调整时,您必须记住所有因素。

让我们规划并了解如何通过使用 JVM 参数并遵循一些性能调优标准和方法来进行 JVM 调优。让我们开始吧!

3.JVM 调优的关键

它是一种强大的工具,但应该策略性地使用。

在开始调整参数之前,让我们先退一步考虑几个关键点:

  • 成本与收益: 您的环境资源受限吗?有时,投入更多硬件来解决问题比花费数小时微调 JVM 更快。

  • 注重稳定性:虽然原始性能很诱人,但从长远来看,稳定可靠的应用程序往往更有价值。也就是说,良好的调整可以提高稳定性和性能。

  • 识别潜在问题:不要给猪涂口红!如果您的系统存在根本问题,调整 JVM 可能只是暂时掩盖它们。在深入研究 JVM 配置之前,先解决根本原因。

  • 内存泄漏是敌人:无论您如何调整 JVM,这些讨厌的东西都会对您的垃圾收集造成严重破坏。追捕并消灭它们!

  • 监控,监控,监控!您无法调整您看不到的东西。确保您正在跟踪关键的 JVM 指标,以了解您的应用程序的行为方式。

4.JVM主要参数

JVM 参数又称 JVM 参数,是特定于 JVM 的设置,可以修改其行为。有几个基本参数需要熟悉,因为在配置和微调 JVM 时会遇到它们。

5.JVM 性能中的堆内存

在优化 JVM 性能时,您可能需要在某个时候初始化堆内存。指定最小和最大堆大小的参数是

-Xms[unit]

-Xmx[unit]

。这里的单位可以是’g’ 表示 GB,‘m’ 表示 MB,或’k’ 表示 KB 。

如今有多家 JVM 提供商,但我观察到,最常用的 JVM 是早期项目,即 Sun/Oracle JVM 或 OpenJDK JVM 等,值得考虑将最小和最大堆大小设置为相同的值。这样做将防止堆调整大小,从而节省宝贵的 CPU 周期。此外,如果您使用的是更大的堆,您可以通过将

-XX :+AlwaysPreTouch

标志设置为启动选项来预触碰所有页面。这可确保所有页面在需要之前都加载到物理内存中,从而进一步优化性能,除非是“HotSpot JVM”或不支持它的 JVM。

当 Java 8 推出时,JVM 架构发生了重大变化。Metaspace 取代了旧的 PermGen 内存空间,这有助于消除java.lang.OutOfMemoryError: PermGen 错误。相反,我们现在监控java.lang.OutOfMemoryError: Metadata space。作为标准类,元数据分配受可用本机内存量的限制。但是,也可以限制新内存空间的最大大小。

尽管 Metaspace 可以增长到本机内存的极限,但它并不总是占用尽可能多的空间。JVM 内存的这个区域的大小可以根据应用程序的需求动态调整,从而实现更高效的内存管理。

可以使用下面提到的参数控制 JVM 中的 Metaspace,即

-XX:MaxMetaspaceSize:设置可为类元数据分配的最大本机内存量。(标准值为无限制)。

java -XX:MaxMetaspaceSize=512m Java程序

-XX:MetaspaceSize:设置分配的类元数据的大小。超过分配的内存时将触发垃圾收集。(标准值取决于平台)。

java -XX:MetaspaceSize=128m Java程序

-XX:MinMetaspaceFreeRatio:设置垃圾回收后需要可用的 Metaspace 内存的最小百分比。当剩余内存低于此阈值时,将调整 Metaspace 区域的大小。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值