Java Webstart 应用程序的内存分配

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4318726/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 05:50:08  来源:igfitidea点击:

Memory allocation for Java Webstart Application

javamemoryjava-web-start

提问by Daniel Standage

I'm using a Java webstart application called BLAST2GOI'm running into problems with memory allocation. It needs to load a large data set into memory, so I've been trying to allocate 3-6GB to this application. However, no matter what I set as the max heap size, it always uses 455MB (as indicated by the message bar: 'Memory usage: xxMB of 455MB'). I've tried setting it to very reasonable levels (1024 MB), but still only 455MB are allocation.

我正在使用一个名为BLAST2GO的 Java webstart 应用程序,我遇到了内存分配问题。它需要将一个大数据集加载到内存中,所以我一直试图为这个应用程序分配 3-6GB。但是,无论我将最大堆大小设置为多少,它始终使用 455MB(如消息栏所示:“内存使用:xxMB of 455MB”)。我已尝试将其设置为非常合理的级别 (1024 MB),但仍然只有 455MB 的分配空间。

Any ideas?

有任何想法吗?

BTW, I'm using Ubuntu 10.04 32-bit with 24GB memory, 8 procs.

顺便说一句,我使用的是 32 位 Ubuntu 10.04,24GB 内存,8 个进程。

Update: Here is the JNLP they provide. I get the same result when I edit the values of the initial-heap-sizeand max-heap-sizeattributes.

更新:这是他们提供的 JNLP。当我编辑initial-heap-sizemax-heap-size属性的值时,我得到了相同的结果。

<jnlp spec="1.0+" codebase="http://bioinfo.cipf.es/blast2go/webstart" href="http://bioinfo.cipf.es/blast2go/webstart/makeJnlp.php?mem=3072">
<information>
<title>Blast2GO 3072M</title>
<vendor>CIPF - UPV - IVIA</vendor>
<homepage href="http://www.blast2go.org"/>
<description>Blast2GO 3072M</description>
<description kind="short">Blast2GO 3072M</description>
<icon href="splash.gif"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="64m" max-heap-size="3072M"/>
<jar href="ext/blast2go.jar"/>
<jar href="ext/biojava-1.3.1.jar"/>
<jar href="ext/jfreechart-1.0.10.jar"/>
<jar href="ext/mysql-connector-java-3.0.11-stable-bin.jar"/>
<jar href="ext/zvtm.jar"/>
<jar href="ext/jakarta-regexp-1.4.jar"/>
<jar href="ext/jcommon-1.0.13.jar"/>
<jar href="ext/Simpat1.1.jar"/>
<jar href="ext/iText-2.1.1.jar"/>
<jar href="ext/jdom/activation.jar"/>
<jar href="ext/jdom/ant.jar"/>
<jar href="ext/jdom/jaxen-core.jar"/>
<jar href="ext/jdom/jaxen-jdom.jar"/>
<jar href="ext/jdom/jdom.jar"/>
<jar href="ext/jdom/mail.jar"/>
<jar href="ext/jdom/saxpath.jar"/>
<jar href="ext/jdom/xalan.jar"/>
<jar href="ext/jdom/xerces.jar"/>
<jar href="ext/jdom/xml-apis.jar"/>
<jar href="ext/interpro/commons-cli-1.0.jar"/>
<jar href="ext/interpro/commons-cli.jar"/>
<jar href="ext/interpro/freefluo.jar"/>
<jar href="ext/interpro/servlet.jar"/>
<jar href="ext/interpro/WSInterProScan.jar"/>
<jar href="ext/axis_1_4/axis-ant.jar"/>
<jar href="ext/axis_1_4/axis.jar"/>
<jar href="ext/axis_1_4/commons-discovery-0.2.jar"/>
<jar href="ext/axis_1_4/commons-logging-1.0.4.jar"/>
<jar href="ext/axis_1_4/jaxrpc.jar"/>
<jar href="ext/axis_1_4/keggapi.jar"/>
<jar href="ext/axis_1_4/log4j-1.2.8.jar"/>
<jar href="ext/axis_1_4/saaj.jar"/>
<jar href="ext/axis_1_4/wsdl4j-1.5.1.jar"/>
<jar href="ext/axis2/activation-1.1.jar"/>
<jar href="ext/axis2/annogen-0.1.0.jar"/>
<jar href="ext/axis2/axiom-api-1.2.2.jar"/>
<jar href="ext/axis2/axiom-dom-1.2.2.jar"/>
<jar href="ext/axis2/axiom-impl-1.2.2.jar"/>
<jar href="ext/axis2/axis2-adb-1.1.1.jar"/>
<jar href="ext/axis2/axis2-adb-codegen-1.1.1.jar"/>
<jar href="ext/axis2/axis2-codegen-1.1.1.jar"/>
<jar href="ext/axis2/axis2-java2wsdl-1.1.1.jar"/>
<jar href="ext/axis2/axis2-jaxbri-1.1.1.jar"/>
<jar href="ext/axis2/axis2-jibx-1.1.1.jar"/>
<jar href="ext/axis2/axis2-kernel-1.1.1.jar"/>
<jar href="ext/axis2/axis2-saaj-1.1.1.jar"/>
<jar href="ext/axis2/axis2-soapmonitor-1.1.1.jar"/>
<jar href="ext/axis2/axis2-spring-1.1.1.jar"/>
<jar href="ext/axis2/axis2-tools-1.1.1.jar"/>
<jar href="ext/axis2/axis2-xmlbeans-1.1.1.jar"/>
<jar href="ext/axis2/backport-util-concurrent-2.2.jar"/>
<jar href="ext/axis2/commons-codec-1.3.jar"/>
<jar href="ext/axis2/commons-fileupload-1.1.1.jar"/>
<jar href="ext/axis2/commons-httpclient-3.0.1.jar"/>
<jar href="ext/axis2/commons-io-1.2.jar"/>
<jar href="ext/axis2/commons-logging-1.1.jar"/>
<jar href="ext/axis2/geronimo-spec-jms-1.1-rc4.jar"/>
<jar href="ext/axis2/jakarta-httpcore-4.0-alpha2.jar"/>
<jar href="ext/axis2/jaxb-api-2.0.2.jar"/>
<jar href="ext/axis2/jaxb-impl-2.0.2.jar"/>
<jar href="ext/axis2/jaxb-xjc-2.0.2.jar"/>
<jar href="ext/axis2/jaxen-1.1-beta-10.jar"/>
<jar href="ext/axis2/jibx-bind-1.1.3.jar"/>
<jar href="ext/axis2/jibx-run-1.1.3.jar"/>
<jar href="ext/axis2/mail-1.4.jar"/>
<jar href="ext/axis2/neethi-2.0.jar"/>
<jar href="ext/axis2/servletapi-2.3.jar"/>
<jar href="ext/axis2/stax-api-1.0.1.jar"/>
<jar href="ext/axis2/woden-1.0.0M6.jar"/>
<jar href="ext/axis2/wsdl4j-1.6.2.jar"/>
<jar href="ext/axis2/wstx-asl-3.2.0.jar"/>
<jar href="ext/axis2/xalan-2.7.0.jar"/>
<jar href="ext/axis2/xbean-2.2.0.jar"/>
<jar href="ext/axis2/xercesImpl-2.8.1.jar"/>
<jar href="ext/axis2/xml-apis-1.3.03.jar"/>
<jar href="ext/axis2/XmlSchema-1.2.jar"/>
<jar href="ext/batik/batik-anim.jar"/>
<jar href="ext/batik/batik-awt-util.jar"/>
<jar href="ext/batik/batik-bridge.jar"/>
<jar href="ext/batik/batik-codec.jar"/>
<jar href="ext/batik/batik-css.jar"/>
<jar href="ext/batik/batik-dom.jar"/>
<jar href="ext/batik/batik-extension.jar"/>
<jar href="ext/batik/batik-ext.jar"/>
<jar href="ext/batik/batik-gui-util.jar"/>
<jar href="ext/batik/batik-gvt.jar"/>
<jar href="ext/batik/batik-parser.jar"/>
<jar href="ext/batik/batik-script.jar"/>
<jar href="ext/batik/batik-svg-dom.jar"/>
<jar href="ext/batik/batik-svggen.jar"/>
<jar href="ext/batik/batik-swing.jar"/>
<jar href="ext/batik/batik-transcoder.jar"/>
<jar href="ext/batik/batik-util.jar"/>
<jar href="ext/batik/batik-xml.jar"/>
<jar href="ext/batik/js.jar"/>
<jar href="ext/batik/pdf-transcoder.jar"/>
<jar href="ext/batik/xalan-2.6.0.jar"/>
<jar href="ext/batik/xerces_2_5_0.jar"/>
<jar href="ext/batik/xml-apis-ext.jar"/>
<jar href="ext/batik/xml-apis.jar"/>
</resources>
<application-desc main-class="es.blast2go.prog.MainProg"/>
</jnlp>

Update: I tried changing the hrefattribute in the root jnlptag and I got a very strange message on the terminal. I wonder if Java is re-downloading the JNLP from this URL each time and ignoring my attempts to edit the JNLP. Is there a way I can prevent this?

更新:我尝试更改hrefjnlp标记中的属性,但在终端上收到一条非常奇怪的消息。我想知道 Java 是否每次都从这个 URL 重新下载 JNLP 而忽略我编辑 JNLP 的尝试。有什么办法可以防止这种情况发生吗?

> javaws blast2go3GB.jnlp 
Error occurred during initialization of VM
CCoouulldd  nnoott  crreesaetrev et heen oJuagvha  svpiarcteu aflo rm aocbhjiencet. 
heap

Final Update: Turns out this was a problem with the Java Version. I got the expected behavior when I downloaded and used Sun Java.

最终更新:原来这是 Java 版本的问题。当我下载并使用 Sun Java 时,我得到了预期的行为。

采纳答案by Thorbj?rn Ravn Andersen

If you are running a 32-bit Linux, you can only run a 32-bit JVM which is limited to about 4 Gb memory per instance. I believe this is also the case even if you have more visible to the kernel.

如果您运行的是 32 位 Linux,则只能运行 32 位 JVM,每个实例的内存限制为大约 4 Gb。我相信即使您对内核有更多的可见性,情况也是如此。

If you really, really need a lot of memory in a single JVM you need to go 64-bit.

如果您真的真的需要在单个 JVM 中使用大量内存,那么您需要使用 64 位。



EDIT: Java WebStart was not open sourced for OpenJDK so an alternative implementation is used. Try to download and use Sun Java for this instead. It should be enough to download and unzip the JDK, and run bin/javaws foo.jnlp.

编辑:Java WebStart 没有为 OpenJDK 开源,因此使用了替代实现。尝试为此下载并使用 Sun Java。下载并解压 JDK,然后运行 ​​bin/javaws foo.jnlp 应该就足够了。

回答by Enrique

You can specify the heap size in the j2se tag like this:

您可以在 j2se 标签中指定堆大小,如下所示:

    <resources>
    .........
            <j2se version="1.6.0+" href="" initial-heap-size="1024m" max-heap-size="3000m" />
            <j2se version="1.5.0_05" href="" initial-heap-size="1024m" max-heap-size="3000m" />
            <j2se version="1.4.2_04" href="" initial-heap-size="1024m" max-heap-size="3000m" />        
    .........
    </resources>

And specify every jre version you would use.

并指定您将使用的每个 jre 版本。

回答by Nowaker

Try to set it by using a manual command line parameter. Something like this:

尝试使用手动命令行参数来设置它。像这样的东西:

<j2se version="1.6+" java-vm-args="-Xms3072m"/>

<j2se version="1.6+" java-vm-args="-Xms3072m"/>

回答by Robert

You can change it simply via command line option, e.g.

您可以通过命令行选项简单地更改它,例如

javaws -J-Xmx16384m -J-Xms16384m <jnlp url>

回答by Stephen C

Did you try the solution from the blast2go start page?

您是否尝试过来自blast2go 起始页的解决方案?

"Blast2GO needs more memory? Use the dynamic memory JNLP URL:"

“Blast2GO 需要更多内存?使用动态内存 JNLP URL:”

http://bioinfo.cipf.es/blast2go/webstart/makeJnlp.php?mem=<put here the amount of memory you need>

It is not clear what is going on here, but I think it is likely that blast2go is doing some manual memory management tricks. (The fact that it claims to report how much memory is used is indicative of this.) If that is the case, then there may be application specific arguments or properties that need to be set if you tweak the JNLP file.

目前尚不清楚这里发生了什么,但我认为blast2go 很可能正在做一些手动内存管理技巧。(它声称报告使用了多少内存的事实表明了这一点。)如果是这种情况,那么如果您调整 JNLP 文件,则可能需要设置特定于应用程序的参数或属性。

回答by Suresh Ragala

In the production, if the customer want to customize the java heap size in jnlp based on the system configuration available ( RAM size on the client machine)

在生产中,如果客户想根据可用的系统配置(客户端机器上的RAM大小)在jnlp中自定义java堆大小

Changes in the APPLICATION_TEMPLATE.JNLP: use * to accept the configurable values

APPLICATION_TEMPLATE.JNLP 中的更改:使用 * 接受可配置的值

Changes in the appliation.jnlp :

在 appliation.jnlp 中的变化:

Pass the actual values to intial-heap-size and max-heap-size. jnlp file supports the scriptlets and expressions.

将实际值传递给初始堆大小和最大堆大小。jnlp 文件支持脚本和表达式。

  • Using scriptlet <% %> read the properties file for the configured values
  • Pass the <%=> expression pointing the actual values to intial-heap-size and max-heap-size
  • 使用 scriptlet <% %> 读取配置值的属性文件
  • 传递 <%=> 表达式,将实际值指向初始堆大小和最大堆大小