首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存耗尽Xmx和Xms

内存耗尽Xmx和Xms
EN

Stack Overflow用户
提问于 2017-08-18 16:15:58
回答 1查看 17.9K关注 0票数 0

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

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

这就引出了另一个问题。我在应用程序上运行j控制台并监视应用程序的内存使用情况。我看到的是,应用程序在启动时消耗大约30 is,大约150 is,垃圾收集器运行,然后下降到30 is。我还看到在pid上使用顶部的情况是,应用程序首先使用大约6%的内存,然后慢慢上升到大约20%。我不明白这点。为什么当我将1GB内存分配给它时,它的内存使用率只有20%。不是应该100%吗。此外,为什么它使用这么多内存(20%),而它似乎从来没有超过150‘t的应用程序?

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

EN

回答 1

Stack Overflow用户

发布于 2017-08-18 16:22:55

内存使用的两种可能性:

你的应用程序不需要那么多内存

你的应用程序使用的内存不够快。

发生了什么:

垃圾收集器有几个点将在其中执行:

  1. 只是预定:它将清除容易删除的对象。
  2. 完整集合:当您达到设置的内存限制时,这将运行。

如果选项1 (通常影响小得多的快速收集)可以控制您的内存使用,那么它将不会击中完整的集合,除非JVM选项设置为按计划运行完整的集合。

在您的应用程序中,我将开始设置较低的xmx/xms值,以便为操作系统留出更多有保障的资源,并且可能会防止分页。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45760977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档