作者taicomjp (Kurosagi.)
看板Eclipse
标题[情报] Eclipse与Java 6u21的问题
时间Mon Aug 2 09:05:37 2010
近日,Oracle发布了Java 6 update 21,对java.dll的创建方式进行了一些细小但无伤大
雅的变更。然而不幸的是,这个改变影响了Eclipse的启动,对Eclipse造成的影响要远远
大於曾经的Sun所拥有的NetBeans。
变化之处是在创建dll时,将COMPANY_NAME=Sun Microsystems, Inc.改为了
COMPANY_NAME=Oracle Corporation。然而不幸的是,Eclipse使用DLL的名字来确认是否
可以安全地附加非标准的-XX:MaxPermSize。如果存在该标识但却不被支持,那麽某些JVM
就无法成功启动,因此就不能将-XX:MaxPermSize放在Eclipse的启动文件中(
eclipse.ini),而是附加了一个新的参数--launcher.XXMaxPermSize 256m,如果
Windows上的加载器检测到是Sun VM,那麽就会自动附加-XX:MaxPermSize=256m。
这种自动检测发生在C加载器中(eclipse.exe)而非VM,这是因为一旦运行了VM,那麽就
没法修改属性了。为了能快速实现该功能(说实在的,这麽做有点不妥),eclipse.exe
加载器会检查Sun Microsystems字符串以确定可否增加该标识。
因此,这个变化破坏了Eclipse的加载过程,导致加载时出现OutOfMemoryError错误。这
个问题很快被报告给了Eclipse,接下来Eclipse将参数名字修改为Oracle,该问题很快就
被解决掉了。
虽然商标变更这种事是Oracle自己的权利(甚至都没必要在发布声明中提及这一点),但
这却着实地影响到了Eclipse,不仅是当前的3.6版,还有基於3.5、3.4、及3.3的所有IDE
与RCP。对於Eclipse来说,需要按照顺序来修复这个问题;目前,有个补丁程序可以修复
最新版Eclipse加载器的这个问题,但还并没有直接发布,因为至少要考虑到Eclipse 3.5
与3.4,为的是确保兼容性。
Oracle因快速的问题解决速度而备受称赞。虽然他们并不需要解决这个问题,但还是在几
天内就解决了,随後的Java构建版本也会修复这个问题(是否要重新构建6u21抑或是6u22
还不太确定)。与此同时,如果你遇到了Eclipse的问题,同时最近又安装了Java 6u21(
或是自动更新的),那麽可以降级到Java 6u20或是按照FAQ的指导重新启用permgen size
。
http://www.infoq.com/cn/news/2010/08/eclipse-java-6u21
查看英文原文:Eclipse and Java 6u21 problems
http://www.infoq.com/news/2010/07/eclipse-java-6u21
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.194.176.157
1F:推 PsMonkey:啊咧... ooxx... [作笔记] 08/02 10:59
2F:→ freesamael:那Oracle是怎麽解决的?把名字改回去吗@@ 08/02 13:40