我的基于rcp的启动程序有launcher.exe,它在类加载期间有一些递归调用,因此得到堆栈溢出错误。为了避免它,我必须增加堆栈大小。但无法通过launcher.exe启动应用程序,但从Windows批处理脚本工作正常 我找到了类似的帖子forum post about increasing stack size 但没有多大帮助。 我的eclipse.ini:
-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740
-vmargs
-Xms256m
-Xmx2048m
-Xss4m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+ScavengeBeforeFullGC
-Declipse.buildId=44.1.2
但奇怪的是,通过Windows批处理脚本,这非常好用:
@echo off
java -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx256m -Xss2m -jar plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar -application xx.yy.zz.mm.application.application -showSplash splash.bmp
exit
不知道为什么eclipse.ini不考虑-Xss agrument 环境:Windows7 + eclipse Neon + 64bit java1.8
xxx.product文件的VM agruments有以下条目:
<launcherArgs>
<vmArgs>-Xms256m -Xmx2048m -Xss4m
-XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+ScavengeBeforeFullGC
</vmArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac>
<vmArgsWin>-Declipse.buildId=44.1.2
</vmArgsWin>
</launcherArgs>
我发现oracle blog here在ini文件中尝试使用-Xss4096k,但还没有运气!不知道通过ini启动和通过命令行启动之间的区别。看起来好像两者都相同,但肯定不是。