2

我有一个问题。我的程序真的很大,java 正在抛出 OutOfMemoryException。在.bat文件中,我有以下内容:

java -server -Dfile.encoding=UTF-8 -Xmx1500m -Xbootclasspath/p:../libs/l2ft.jar -cp config/xml;../libs/*; l2ft.gameserver.GameServer

Java 正在使用我的 6 GB RAM,接下来的 6 GB 未使用。

我输入System.getProperty("sun.arch.data.model");了它,它说我使用的是 64 位 JVM。

4

2 回答 2

4

您已将最大堆大小设置为 1500m,而 JVM 可以使用多一点的 ~200 MB,这就是您限制进程的全部。

请尝试将进度限制在 5 GB 左右。(您想为开销和操作系统留下一些内存)

-mx5g
于 2012-09-16T14:08:44.193 回答
0

在此之前进行选项Xbootclasspath

java -XX:MaxPermSize=512m -server -Dfile.encoding=UTF-8 -Xmx8g -XX:+UseCompressedOops

这将使它使用更多内存,并确保它使用尽可能少的内存来寻址 64 位机器中的对象。

-XX:MaxPermSize=512m使得 perm gem 空间更大(当你使用大量堆内存时你可能需要它),并且-XX:+UseCompressedOops将使它对对象使用 32 位寻址,而不是 64 位,因为 8gb 堆可以用 32 位正确寻址,所以它可以让你使用更少的内存来分配对象。

于 2012-09-16T14:14:48.717 回答