我的目标:
我希望能够为1000名用户运行我的应用程序。
现在:
我正在尝试为100个用户运行此应用程序。 在应用程序运行期间,我想为每个用户执行一些处理,每个用户至少需要一个小时的时间,因此我为每个用户使用一个线程。
错误:
Caused by: java.lang.OutOfMemoryError: Java heap space
我已经尝试弄清楚这是什么意思,但我不确定如何解决它。
有人能帮我吗?
我的目标:
我希望能够为1000名用户运行我的应用程序。
现在:
我正在尝试为100个用户运行此应用程序。 在应用程序运行期间,我想为每个用户执行一些处理,每个用户至少需要一个小时的时间,因此我为每个用户使用一个线程。
错误:
Caused by: java.lang.OutOfMemoryError: Java heap space
我已经尝试弄清楚这是什么意思,但我不确定如何解决它。
有人能帮我吗?
-Xmx
选项(例如1024 MB: -Xmx1024m
)增加默认允许程序使用的内存量。使用带有有限数量工作线程的生产者/消费者模式。
100+个线程是荒谬的 - 难怪您的应用程序会崩溃。
您并没有提供任何信息表明这个问题与Stack Overflow给出的所有答案非常不同;
-mx
或-Xmx
增加最大内存。我怀疑如果您希望1000个用户运行每个进程需要一个小时,您可能需要比您拥有的资源更多的资源,例如1000个核心? 我建议您根据CPU、内存、磁盘IO和网络IO所需求的水平来查看您需要多少硬件才能使用户以可接受的水平运行,例如20个用户,然后将其乘以50。
当您启动应用程序时,可以尝试增加JVM堆空间。您可以使用-Xmx2g
将其设置为2GB。如果您正在运行32位Java,则我认为2GB是最高限度,但如果您有64位JVM,则应该能够更高。
编辑:
示例:java -Xmx2g MyApp
当出现内存错误时,我会检查两个方面: