Java 通过jnlp启动的小程序的增量内存

Java 通过jnlp启动的小程序的增量内存,java,memory-management,applet,java-web-start,Java,Memory Management,Applet,Java Web Start,我正在开发一个java应用程序,它需要做一些计算,并且需要在线提供 我从2005年开始用Java开发,但从来没有把任何东西放到网上,我总是使用RMI 我研究了如何创建applet,并成功地将我的桌面应用程序转换为applet(applet生命周期应用程序,将JFrame转换为JApplet等) 我注意到的是,性能确实变慢了,所以我尝试了其他方法。我阅读了JavaWebStart,并开始思考它 找到这篇文章: 接下来,我做了以下事情(写下来供未来读者参考): 为我的应用程序制作了一个jar并签名

我正在开发一个java应用程序,它需要做一些计算,并且需要在线提供

我从2005年开始用Java开发,但从来没有把任何东西放到网上,我总是使用RMI

我研究了如何创建applet,并成功地将我的桌面应用程序转换为applet(applet生命周期应用程序,将JFrame转换为JApplet等)

我注意到的是,性能确实变慢了,所以我尝试了其他方法。我阅读了JavaWebStart,并开始思考它

找到这篇文章: 接下来,我做了以下事情(写下来供未来读者参考):

  • 为我的应用程序制作了一个jar并签名(显然名称已更改)
  • 编写了以下JNLP:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp href="appJNLP.jnlp">
        <information>
            <title>Software title</title>
            <vendor>Society name</vendor>
            <offline-allowed />
        </information>
        <resources>
            <j2se version ="1.6+" initial-heap-size="256m" max-heap-size="1024m"
           href="http://java.sun.com/products/autodl/j2se" />
            <jar href="app.jar" main="true" />
            <jar href="mysql-connector-java-5.1.20-bin.jar"/>
            <jar href="poi-3.8-20120326.jar"/>
            <jar href="forms-1.3.0.jar"/>
        </resources>
        <applet-desc name="Name" main-class="mainClass" width="1024" height="700"/>
    </jnlp>
    
正如您所看到的,我选择了混合部署方式(在该方法使小程序能够在旧的和下一代Java插件软件上运行之前的链接中说明)。 我想我做的一切都很好。小程序在网页中加载,但速度非常慢。。。 在这个响应之后,我在jnlp部分添加了内存参数:(initial heap size=“256m”max heap size=“1024m”),但它们似乎被忽略了。我还尝试在2gb RAM机器上输入错误值,如initial heap size=“5000m”,但小程序仍然加载,速度仍然很慢。 控制台在jnlp文件运行后显示此信息,但小程序仍在运行:

Match: selecting maxHeap: 8388608000
Match: selecting InitHeap: 5242880000
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: http://localhost:8090/TestServer/gestioneoneri.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
security:  --- parseCommandLine converted : -Xms5000m
into:
[-Xms5000m]
Match: JVM args final: -Xmx8000m -Xms5000m
它不应该抛出异常吗

现在我的问题是:

  • 如何确定代码是在JNLP环境中执行的,而不是在小程序环境中执行的?我没有看到JavaWebStart徽标。这正常吗
  • 如何将初始和最大内存大小增加到更多人的值
  • 我需要这个软件被嵌入到网页中。因为我不知道我使用的是applet还是javawebstart应用程序,我如何才能改善我的用户体验?例如,我正在谈论扩展JApplet或JFrame。。在无法增加内存的情况下,如何将小程序转换为jws应用程序
我愿意接受建议。 谢谢你抽出时间


安德烈。。。相当多的抽象问题

我将试着回答一点

所以

  • 我如何确定代码是在JNLP中执行的 环境,而不是小程序环境?我看不到Java Web 启动标志。这正常吗
如果您使用JNLP启动,并且启动成功,您可以确定它是由JAWS启动的; 我也看不到大白鲨的标志。。。但这是正常的。我不记得什么JRE升级后它消失了,但要查看JRE运行的小程序,您只需查看临时internet文件缓存(查看其jnlp文件)

  • 如何将初始和最大内存大小增加到更多人的值
正如我所记得的,有一个jnlp参数使这个。。。有点像


有关更多详细信息,请参阅

  • 我需要这个软件被嵌入到网页中。因为我不知道 知道我使用的是小程序还是java web start应用程序, 如何改善我的用户体验?我说的是扩展 例如JApplet或JFrame。。在这种情况下,我不能增加记忆 如何将小程序转换为jws应用程序
就JAWS应用程序而言,正如我所记得的,在应用程序启动期间应该显示JAWS徽标。所以你们可以很容易地把小程序和应用程序分开,我想。。。使用应用程序或小程序这一切都取决于您的项目要求

webapps\app
    app.jar
    appJNLP.jnlp
    page.html
    mysql-connector-java-5.1.20-bin.jar
    poi-3.8-20120326.jar
    forms-1.3.0.jar
Match: selecting maxHeap: 8388608000
Match: selecting InitHeap: 5242880000
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: http://localhost:8090/TestServer/gestioneoneri.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
security:  --- parseCommandLine converted : -Xms5000m
into:
[-Xms5000m]
Match: JVM args final: -Xmx8000m -Xms5000m
<j2se version="1.3" initial-heap-size="64m" max-heap-size="128m"/>