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是否擁有我認爲應該達到的最大內存量。