Spring Tool Suite 老是假死 怎么破

2017-03-13 14:25:40 +08:00
 Antidictator

RT ,这是 sts.ini ,我觉得我已经调整的挺大的了。

-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.7
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-server
-Xmn256m
-Xms2048m
-Xmx4096m
-Xss8m
-XX:PermSize=1024m
-XX:MaxPermSize=1024m
-XX:+UseParallelGC

公司要求用 eclipse ,我习惯用 sts 。

在不换 ide 的情况下,怎么减少这种假死(未响应)次数呢,内存 8G 。

CPU 、内存都是只用 80%,还没爆。

9341 次点击
所在节点    程序员
4 条回复
jones
2017-03-13 15:56:51 +08:00
假死可能有两个原因:
一、 GC 引发的 STW
二、 Eclipse 4.x 的自身的性能问题, Eclipse 4.2 发布后报漏出来很大的性能问题,这个也是官方承认的,见下面
https://www.infoq.com/news/2012/09/eclipse-juno-performance
官方的说法是没钱没资源所以发布前没做性能测试,虽然 Google 随后赞助了一些资金,但是性能问题在 4.x 中一直
存在,根本没有得到彻底性解决,为此 Eclipse 还新增了一个“ UI Responsiveness Monitoring"功能,然没有卵用,个
人猜测是 E4 的架构问题导致,总之 E4 就是一个又丑又慢又垃圾的作死产物,很多人都认为 Eclipse 自己把自己玩死了,
.............扯远了,见谅,,总之如果你要用 Eclipse 4.x ,一定要用最新版,目前应该是 4.6.2 。

解决办法:
针对第一个原因,调整你的 JVM 参数,说实话你的 GC 参数够烂,以减少 GC 次数和降低 STW 的停顿时间为目标,并不是 Heap 越大越好,你搞 4G 的 Heap ,一次 Full GC 停顿好几秒甚至十几秒,不卡死你卡谁啊,另外 GC 新生代并行收集器,旧生代 CMS ,打开你的 GC Log,不看 GC 日志的调优都是刷流氓。初始值和最大值设置成一样的,新生代整个 Heap 的 3/8,自己算,启动 STS 重新编译一次项目,根据你的 GC Log 内容调整你整个 Heap 大小和新生代大小, 3/8 只是官方建议值,没啥实际意义,肯定要根据自己的情况做调整的。永久代可以 384m,512m 这些,初始和最大也搞成一样的,你搞 1G 明显是浪费,你有那么多 class 吗,

针对第二个原因,升级你的 STS 到最新版,每个项目都要关掉 Validation,去除 JavaScript Facets ,话说 Eclipse 做的 JSDT 插件是我见过最烂的 js 插件,还不如不做呢,基本上 Eclipse 假死都是 JSDT 这货搞的。
http://movingfulcrum.com/the-fall-of-eclipse/ , Eclipse 基本已经完蛋了,又没钱又没开发资源,死抱着它的”大平台“概念,不好好做 IDE ,光宣传它的平台有卵用啊,古时候同样功能的插件你总是能找到好几个不同的,现在都死的不能在死了,连个好的 Freemarker 编辑器插件你现在都找不到, 4.6.x 才加了一个 JSON 编辑器,但是连个 JSON 格式化都没做好,根本就是一个半成品......总之就是如果条件允许赶紧换 IDEA,甚至 Netbeans 都比 Eclipse 强。

附上我的 eclipse.init 供参考,同时编译几个大的项目也从来没有卡死过:

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.401.v20161122-1740
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-Xms1024m
-Xmn384m
-Xmx1024m
-XX:MetaspaceSize=256M
-XX:MaxMetaspaceSize=384M
-XX:+DisableExplicitGC
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-verbose:gc
-Xloggc:gc.log
-Duser.language=en
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
sorra
2017-03-13 16:25:28 +08:00
把 Eclipse 内置的 Task List 相关插件都禁用。另外 STS 性能也不好
Antidictator
2017-03-13 18:27:37 +08:00
@jones 感谢感谢,等两个小时等来个高质量回复
Antidictator
2017-03-13 18:28:11 +08:00
@sorra 好的,我试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/347071

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX