如何确定某个服务堆内存使用哪块内存?
How to determine which memory to use for a certain service heap memory?
我们有一个服务占用大约 600 MB 的堆。
我们目前的主机有 4 GB 内存。默认情况下,JVM 分配最大堆大小的 25%。所以我们得到 1 GB 的堆大小。
我们看到多次断电,我怀疑我们用于这些的内存不足。我添加了一个具有 8 GB 内存的主机,并将 CPU 数量增加了一倍,并且该主机从未断电,从而进一步加强了我的理论。
想了解占用 600MB 堆的进程的最佳内存值是多少。
还想了解增加堆大小的意义。
我尝试将初始堆大小增加到 2GB,但是当我将更改部署到主机时主机崩溃了。将堆大小增加到 1.5 GB 是否有意义?
感谢任何指点。
堆所需的确切内存量因应用程序而异 - 您最好尝试多种配置并自行查看。
但是,需要 4 GB 来存储大约 600 MB 的内容是很不寻常的。消耗主机内存的还有哪些?
请注意,JVM 使用的不仅仅是堆内存,而且不同应用程序之间的差异也很大。
对于 JVM 使用的各种内存类型的概述,我推荐这个优秀的答案:
最后,您可以通过 -XX:MaxRAMPercentage
标志调整默认分配策略(可用 RAM 的 25%)- 我通常将其设置为 60%,但一定要先测量!
我们有一个服务占用大约 600 MB 的堆。
我们目前的主机有 4 GB 内存。默认情况下,JVM 分配最大堆大小的 25%。所以我们得到 1 GB 的堆大小。
我们看到多次断电,我怀疑我们用于这些的内存不足。我添加了一个具有 8 GB 内存的主机,并将 CPU 数量增加了一倍,并且该主机从未断电,从而进一步加强了我的理论。
想了解占用 600MB 堆的进程的最佳内存值是多少。
还想了解增加堆大小的意义。
我尝试将初始堆大小增加到 2GB,但是当我将更改部署到主机时主机崩溃了。将堆大小增加到 1.5 GB 是否有意义?
感谢任何指点。
堆所需的确切内存量因应用程序而异 - 您最好尝试多种配置并自行查看。
但是,需要 4 GB 来存储大约 600 MB 的内容是很不寻常的。消耗主机内存的还有哪些?
请注意,JVM 使用的不仅仅是堆内存,而且不同应用程序之间的差异也很大。
对于 JVM 使用的各种内存类型的概述,我推荐这个优秀的答案:
最后,您可以通过 -XX:MaxRAMPercentage
标志调整默认分配策略(可用 RAM 的 25%)- 我通常将其设置为 60%,但一定要先测量!