我在 Windows XP 5.1 上的 Java 1.6(即构建 1.6.0-b105)中使用 wsimport,但出现内存不足异常。我曾经使用过 JConsole,似乎 wsimport 进程最大为 64 MB。如何增加 wsimport 的堆内存?
谢谢,
对我来说,设置环境变量 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 信任调试。)
(我使用的是带有 OpenJDK 6 的 Ubuntu,软件包版本为 6b20-1.9.7-0ubuntu1。)
wsimport 通过 WSIMPORT_OPTS 环境变量接受 JVM 参数。因此,在 Windows 上,尝试在运行 wsimport 之前在命令行上运行“set WSIMPORT_OPTS=-Xmx512M”,以便为 JVM 提供 512Mb 的堆。
如果您使用的是足够现代的 JDK,则可以使用该-Xnocompile
选项,然后javac
以通常的方式为进程提供额外的内存。(尝试wsimport --help
查看您的版本是否支持该标志。)
wsimport 似乎能够使用 -J 选项传递 java 参数:
wsimport -J-Xmx1024M ...
应该管用。
只需执行以下操作(WINDOWS)
set CLASSPATH=<JAVA_HOME>\lib\tools.jar;%classpath%
java -Xmx1024m com.sun.tools.internal.ws.WsImport <YOUR_WSDL>
它应该工作
我想解决这个问题。最简单的方法是使用 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/Schema 生成的类的数量约为 1500 个类。希望这对遇到类似问题的人有所帮助。