gpt4 book ai didi

java - 内存耗尽 Xmx 和 Xms 一侧

转载 作者:行者123 更新时间:2023-12-02 12:21:13 26 4
gpt4 key购买 nike

我编写的 java 应用程序遇到了导致硬件性能问题的问题。问题(我相当确定)是我运行该应用程序的一些机器只有 1GB 内存。当我启动 java 应用程序时,我将堆大小设置为 -Xms 512m -Xmx 1024m。

我的第一个问题是,我的假设是否正确,因为我将所有机器内存分配给 java 堆,这显然会导致性能问题?

这引出了另一个问题。我在应用程序上运行 jconsole 并监视应用程序的内存使用情况。我看到的是,该应用程序在启动时消耗约 30mb,达到约 150mb,垃圾收集器运行后又回落到 30mb。我还发现在 pid 上使用 top 时,应用程序一开始使用了大约 6% 的内存,然后慢慢攀升至大约 20%。我不明白。为什么当我分配 1GB 给它时它只能获得 20% 的内存使用率。不应该达到100%吗?另外,为什么它使用那么多内存 (20%),而应用程序似乎没有使用超过 150mb 的内存?

我认为很明显我需要调整我的 Xms 和 Xmx,这应该可以解决问题,但我正在尝试更好地了解到底发生了什么。

最佳答案

内存使用的两种可能性:

您的应用程序只是不使用那么多内存

或者

您的应用使用那么多内存的速度不够快。

发生了什么:

垃圾收集器有几个执行点:

  1. 刚刚安排:它将清理易于删除的对象

  2. 完整收集:当您达到设置的内存限制时运行。

如果选项 1(一般影响较小的快速收集)可以控制内存使用,则除非将 JVM GC 选项设置为按计划运行完整收集,否则它不会进行完整收集。

对于您的应用程序,我将开始设置较低的 xmx/xms 值,以便为操作系统留下更多有保证的资源,并且可能会阻止某些分页。

关于java - 内存耗尽 Xmx 和 Xms 一侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45760977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com