wsimport Java 1.6中的内存不足问题

时间:2010-01-27 00:07:12

标签: java wsimport

我在Windows XP 5.1中使用了Java 1.6中的wsimport(即构建1.6.0-b105)并且我遇到了内存不足异常。我曾经使用JConsole,似乎wsimport进程最大为64 MB。如何为wsimport增加堆内存?

谢谢,

6 个答案:

答案 0 :(得分:2)

对我来说,设置环境变量WSIMPORT_OPTS(在另一个答案中建议,显然在旧版本的wsimport中工作)似乎没有任何效果。

对我来说,以下 工作:而不是wsimport使用

  

java -classpath $JAVA_HOME/lib/tools.jar com.sun.tools.internal.ws.WsImport

其中$JAVA_HOME是JDK(不是JRE)根文件夹。

在此Java命令行上,您可以添加所需的任何JVM选项。 (我需要-Djavax.net.debug=all进行SSL信任调试。)

(我正在使用Ubuntu和OpenJDK 6,包版本为6b20-1.9.7-0ubuntu1。)

答案 1 :(得分:1)

wsimport通过WSIMPORT_OPTS环境变量接受JVM参数。所以在Windows上,尝试在运行wsimport之前在命令行上运行“set WSIMPORT_OPTS = -Xmx512M”,为JVM提供512Mb的堆。

答案 2 :(得分:1)

如果您使用的是足够现代的JDK,则可以使用-Xnocompile选项,然后以常规方式为javac进程提供额外的内存。 (尝试wsimport --help查看您的版本是否支持该标记。)

答案 3 :(得分:1)

wsimport似乎能够使用-J选项传递java参数:

wsimport -J-Xmx1024M ...

应该有用。

答案 4 :(得分:0)

我想通过这个问题。最简单的方法是使用Netbeans(我使用的是v6.8)。将/ etc目录下的Netbeans.conf中的默认内存设置替换为:-J-Xms768m -J-Xmx768m -J-XX:PermSize = 128m并按照常规方法在Netbeans中使用JAX WS创建Web Service Client。从JConsole,我看到在内存中加载~18,500个类的整体往往在~400MB到~650MB之间使用。基于我的WSDL / Schemas生成的类的数量是~1500个类。希望这有助于遇到类似问题的人。

答案 5 :(得分:0)

如下所示(WINDOWS)

set CLASSPATH=<JAVA_HOME>\lib\tools.jar;%classpath%
java -Xmx1024m com.sun.tools.internal.ws.WsImport <YOUR_WSDL>

应该有效