0

我有一个用 java 编写的服务器,在 Windows 7 中运行良好。但是当我在 Ubuntu 中安装相同的服务器时,它显示内存不足错误,服务器有 8 GB 的内存,而我们的服务器只使用了 70% 的内存,它显示了的内存错误。CPU 使用率在内存不足时达到峰值。

  1. 如何将剩余的 30% 内存分配给我的应用程序?
  2. 如何增加分配给 Ubuntu 中应用程序的内存限制?

在 Windows 中不会发生内存不足错误,只有 Ubuntu。在 windows 任务管理器中显示 100% 的 CPU 使用率和完整的 RAM 使用率。我希望在 Ubuntu 中实现这种性能。

4

2 回答 2

2

如果您的意思是 Java 抛出OutOfMemoryError,您首先需要了解原因。您可能想要使用VisualVM(免费)或YourKit(非免费)之类的分析器来查看内存中发生了什么。之后,您可以决定适当的操作,例如提高应用程序的内存效率或更改 JVM 设置以增加适当的内存分配。

为了让您开始,如果您的堆空间(老一代)用完,您可以使用 JVM 标志调整可用的最大堆-Xmx。例如,-Xmx1024m-Xmx1g将最大值设置为 1GB。如果是永久代 (PermGen),您可以使用-XX:MaxPermSizeJVM 标志为该永久代分配更大的总堆块,例如-XX:MaxPermSize=256m. 请注意,增加永久代的大小将相应地减少其他堆段可用的内存量。

有关这些和其他 JVM 内存设置的完整详细信息,请参见Java 应用程序启动器页面HotSpot VM 选项页面(假设您使用的是 HotSpot VM)。

于 2012-12-30T06:12:22.213 回答
0

您可以使用ulimit来限制所需进程的 RAM 使用量。

此外,对于Java应用程序,您可以将-Xms(最小)、-Xmx(最大)等参数传递给java进程(M 代表 MB,G 代表 GB)。

于 2012-12-30T06:12:13.283 回答