我正在使用ANTLR4解析文件。它发出内存不足异常。因此,我增加了sts.ini
和eclipse.ini
中的堆内存。下面是我的sts.ini文件。
-startup
plugins/org.eclipse.equinox.launcher_1.5.200.v20180922-1751.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.900.v20180922-1751
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-XX:MaxPermSize=2048m
-Dosgi.module.lock.timeout=10
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx2048m
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Xms512m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+UseFastAccessorMethods
堆内存增加。我可以在eclipse / sts的堆状态栏中看到。但是程序仍然失败。
在运行配置中传递-Xmx1024m
时,程序成功。
eclipse / sts没有通过这些vmargs运行配置的任何原因是什么?
更新:我使用Runtime.getRuntime().maxMemory();
验证了内存,未运行配置显示为512 MB,运行配置显示为2 GB。
我在运行配置中没有其他vmargs。
STS版本:
版本:3.9.7.RELEASE,平台:Eclipse 2018-12(4.10.0)
答案 0 :(得分:2)
eclipse.ini / sts.ini文件中的设置仅由Eclipse / STS使用-不会传递给您在Eclipse中运行的程序。
每个程序的设置都是单独的,并在程序的“运行”>“运行配置”中进行配置。
您可以使用“编辑...”按钮并编辑“默认VM参数”字段,在“ Java>已安装JRE”页面上的“首选项”中为特定JRE配置默认VM参数。