【发布时间】:2019-03-17 01:09:27
【问题描述】:
我正在尝试运行一个可以处理 100M 行记录的 jar。我达到了 GC 上限。它适用于10M,没有问题。
我知道最好的办法是找到溢出发生的位置
我想尝试一次在服务器上运行 jar,为其提供堆内存、GC 内存等方面的最大资源。
我尝试使用 -xms 和 -xmc 运行我的 jar
java -Xmx256m -Xmc256m -jar myapp.jar //类似的东西
我想知道如何以尽可能多的资源运行,因为我不将此服务器用于任何其他应用程序。
我也试过用这个命令多线程
java -jar -Xmx30024m -XX:ParallelGCThreads=12000 myapp.jar
但我不确定这能起到多大作用。
有人可以建议我如何通过在命令行中进行一些有限更改来克服此 GC 错误,以使用实例中的最大资源。
【问题讨论】:
-
它已经在使用可能的最大资源在死于该异常之前,您真的将堆设置为 30GB,但这还不够吗?也将该数字
ParallelGCThreads降至 12000 以下 -
您确定您尝试加载的记录都需要同时在内存中吗?如果不尝试按顺序加载它们,即一次加载 100 万个。此外,如果加载 100M 记录所需的内存超过服务器上的资源,那么 JVM 参数将无济于事。
标签: java memory-management jar out-of-memory heap-memory