Kevin的确,它与applet的运行方式和桌面应用程序之间的区别是有意义的,但令我感到震惊的是,applet和applet之间的最大(我认为更大)内存有很大差异一个桌面应用程序,这是〜8%。如果它是如你所说的“小程序”堆栈“更厚,考虑到他们的行为更严格的限制”我期待,小程序将获得更大的最大内存,而不是独立版。
我在applet和应用程序之间进行了一些测量。两者都收到相同的参数(-Xmx128M),两者都使用相同的JVM运行 - Java HotSpot™64位服务器VM版本11.3-b02(第一次我认为小程序正在运行客户端JVM并且桌面正在运行服务器JVM,但似乎都与服务器JVM)
当然,在现实中不同的参数收到的JVM,但没有重大(我认为):
- 小程序:-D__jvm_launched = 426431678538 -Xbootclasspath/A :/usr/jvm/64/jdk1.6.0_13/jre/lib/deploy.jar:/usr/jvm/64/jdk1.6.0_13/jre/lib/javaws.jar:在/ usr/JVM/64/jdk1。 6.0_13/jre/lib/plugin.jar -Xmx128m
- standalone:-Xrun jdwp:transport = dt_socket,address = 127.0.0.1:54876,suspend = y,server = n -Xmx128M -Dfile.encoding = UTF-8
Applet:max。内存= 119.314K
- 堆
- PS伊甸园空间:14,592K
- PS生存空间:14.528K
- PS老根:87.424K
- 非堆
- 纪念品普尔代码高速缓存:49.152K
- 纪念品普尔PS彼尔姆代:86.016K
桌面:最大。内存= 129.302K
- 堆
- PS伊甸园空间:8.704K
- PS生存空间:3.008K
- PS老根:116.544K
- 非堆
- 纪念品普尔代码高速缓存:49.152K
- 纪念品普尔PS彼尔姆代:65.536K
的这两个JVM之间差异很大
- PS烫发根,小应用程序有一个更大的块 - 这是有道理的,因为小程序将与单机版相比,装载可能的其他类(但即使在这种情况下,“老根”要小得多,这是奇怪的,因为通常都这些额外的课程,最终获得了“老根”)
- 堆内存,伊甸园/幸存者/老将军applet的老根之间完全不同的比率是独立的老根的75%,这是一个很大的区别,我会说,如果期待(最近的)相同的内存模型,我很友善,因为当我将应用程序作为applet或桌面应用程序运行时,应该没有什么区别。
现在我更糊涂了,不仅如此,我不知道如何计算max.memory比(0.9确实不能与未来的JVM版本有效),但我的应用程序能拿出来的记忆当作为applet运行时。当它作为一个applet运行以保证安全时,我需要增加大约10-15%的最大内存。
我仍然不为什么这样的不同的堆比(在同一台机器上)和一个较小的堆(特别是考虑到一个applet需要附加的类)信服。
任何原因?我现在很好奇,这超出了我的需要,以检查applet是否拥有我认为应该达到的最大内存量。