让我来告诉你:最重要的 JVM 参数总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让我来告诉你:最重要的 JVM 参数总结相关的知识,希望对你有一定的参考价值。

参考技术A

在本篇文章中,你将掌握最常用的 JVM 参数配置。如果对于下面提到了一些概念比如堆、

与性能有关的最常见实践之一是根据应用程序要求初始化堆内存。如果我们需要指定最小和最大堆大小(推荐显示指定大小),以下参数可以帮助你实现:

举个栗子,如果我们要为JVM分配最小2 GB和最大5 GB的堆内存大小,我们的参数应该这样来写:

根据Oracle官方文档open in new window,在堆总可用内存配置完成之后,第二大影响因素是为 Young Generation 在堆内存所占的比例。默认情况下,YG 的最小大小为 1310 MB ,最大大小为 无限制

一共有两种指定 新生代内存(Young Ceneration)大小的方法:

1.通过-XX:NewSize和-XX:MaxNewSize指定

举个栗子,如果我们要为 新生代分配 最小256m 的内存,最大 1024m的内存我们的参数应该这样来写:

2.通过-Xmn [unit] 指定

举个栗子,如果我们要为 新生代分配256m的内存(NewSize与MaxNewSize设为一致),我们的参数应该这样来写:

GC 调优策略中很重要的一条经验总结是这样说的:

另外,你还可以通过**-XX:NewRatio= **来设置新生代和老年代内存的比值。

比如下面的参数就是设置新生代(包括Eden和两个Survivor区)与老年代的比值为1。也就是说:新生代与老年代所占比值为1:1,新生代占整个堆栈的 1/2。

从Java 8开始,如果我们没有指定 Metaspace 的大小,随着更多类的创建,虚拟机会耗尽所有可用的系统内存(永久代并不会出现这种情况)。

JDK 1.8 之前永久代还没被彻底移除的时候通常通过下面这些参数来调节方法区大小

相对而言,垃圾收集行为在这个区域是比较少出现的,但并非数据进入方法区后就“永久存在”了。

JDK 1.8 的时候,方法区(HotSpot 的永久代)被彻底移除了(JDK1.7 就已经开始了),取而代之是元空间,元空间使用的是本地内存。

下面是一些常用参数:

为了提高应用程序的稳定性,选择正确的垃圾收集open in new window算法至关重要。

JVM具有四种类型的 GC 实现:

有关 垃圾回收 实施的更多详细信息,请参见此处open in new window。

为了严格监控应用程序的运行状况,我们应该始终检查JVM的 垃圾回收 性能。最简单的方法是以人类可读的格式记录 GC 活动。

使用以下参数,我们可以记录 GC 活动:

以上是关于让我来告诉你:最重要的 JVM 参数总结的主要内容,如果未能解决你的问题,请参考以下文章

kafka为什么突然就火了呢?让我来告诉你原因

OpenSSH 和 OpenSSL 究竟什么关系?让我来告诉你!

IT界的新方向-大数据?让我来告诉你如何从“零”学起!

让我告诉你Java代码中的i++在JVM上是如何执行的

让我告诉你Java代码中的i++在JVM上是如何执行的

为什么MyEclipse没有自动提示我来告诉你