睫晉姬

          Java虛擬機支持的最大內存限制

            最近在開發Java的程序。本來我是一直很喜歡Java的內存管理的,不需要擔心分配內存,只管分配,垃圾收集器自己會給你回收內存的?,F在開發的程序數據量很大,為了速度快,我準備把所有的信息加載進內存,這樣可以保證快速響應。我還在反復算內存,想想自己的數據量,現在剛開始的時候應該夠了(我的機器是4G內存,雖然Windows就認3.5G,但是比起我現在的數據量應該沒問題)。

            沒想到第一個實驗的程序,跑了幾個小時,就遇到了Out of Memory Exception了??纯醋约旱奶摂M機設置,我設置的是-Xms512M -Xmx1024M。想都沒想,直接改成-Xms512M -Xmx2048M,結果直接就Could not reserve enough space for object heap。程序都起不來了。這才發現原來最大內存還有限制。上網搜了一下干洗機,發現很多討論這個問題的文章。最終在BEA的DEV2DEV論壇發現了最有用的一篇http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID= 35704&start=0&tstart=0

            這里的版主YuLimin 做了測試,得出結論:

            公司 JVM版本                  最大內存(兆)client    最大內存(兆)server

            SUN 1.5.x                          1492                            1520

            SUN 1.5.5(Linux)             2634                            2660

            SUN 1.4.2                          1564                            1564

            SUN 1.4.2(Linux)             1900                            1260

            IBM 1.4.2(Linux)             2047                             N/A

            BEA JRockit 1.5 (U3)      1909                             1902

            我現在用的是JDK1.6. 0_05,測試了一下。在Client狀態下最大是,我的JDK不認-Server參數,測試不了Server狀態。估計差不多。

            SUN 1.6.0                          1442                           N/a

            看樣子用Java想用大內存也是不可能的了。而且一般的說法是內存太大了,垃圾收集的時間就會長。這也可以理解,一般是內存不夠用了才收集的,掃描2G內存比1G當然要慢多了,而且內存對象多了,估計關系是指數上升的。

            下面附上YuLimin的測試方法和測試記錄。

            測試方法:在命令行下用 java -XmxXXXXM -version 命令來進行測試,然后逐漸的增大XXXX的值,如果執行正常就表示指定的內存大小可用,否則會打印錯誤信息。

            測試記錄:

            我在Windows 2000 ADS上面測試內存使用的結果如下

            SUN的1.2.2、1.3.1、1.4.2、1.5.0、IBM1.4.2、BEA JRockit 1.4.2

            F:\JDK\1.2.2\bin>java -Xmx700000255M -version

            java version “1.2.2″

            Classic VM (build JDK-1.2.2_017, native threads, symcjit)

            F:\JDK\1.2.2\bin>java -Xmx700000256M -version

            Bad max heap size: -Xmx700000256M

            Could not create the Java virtual machine.

            =====================================================================

            F:\JDK\1.3.1\bin>java -version

            java version “1.3.1_18″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_18-b01)

            Java HotSpot(TM) Client VM (build 1.3.1_18-b01, mixed mode)

            F:\JDK\1.3.1\bin>REM If present, the option to select the VM must be first.

            F:\JDK\1.3.1\bin>REM The default VM is -hotspot.

            F:\JDK\1.3.1\bin>java -hotspot -Xmx1554M -version
            java version “1.3.1_18″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_18-b01)

            Java HotSpot(TM) Client VM (build 1.3.1_18-b01, mixed mode)

            F:\JDK\1.3.1\bin>java -hotspot -Xmx1555M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            F:\JDK\1.3.1\bin>java -server -Xmx1522M -version

            java version “1.3.1_18″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_18-b01)

            Java HotSpot(TM) Server VM (build 1.3.1_18-b01, mixed mode)

            F:\JDK\1.3.1\bin>java -server -Xmx1523M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            F:\JDK\1.3.1\bin>java -classic -Xmx2047M -version

            java version “1.3.1_18″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_18-b01)

            Classic VM (build 1.3.1_18-b01, native threads, nojit)

            F:\JDK\1.3.1\bin>java -classic -Xmx2048M -version

            Bad max heap size: -Xmx2048M

            Could not create the Java virtual machine.

            =====================================================================

            F:\JDK\1.4.2\bin>java -version

            java version “1.4.2_12″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)

            Java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode)

            F:\JDK\1.4.2\bin>REM The default VM is client.

            F:\JDK\1.4.2\bin>java -client -Xmx1308M -version

            java version “1.4.2_12″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)

            Java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode)

            F:\JDK\1.4.2\bin>java -client -Xmx1309M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            F:\JDK\1.4.2\bin>java -server -Xmx1308M -version

            java version “1.4.2_12″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)

            Java HotSpot(TM) Server VM (build 1.4.2_12-b03, mixed mode)

            F:\JDK\1.4.2\bin>java -server -Xmx1309M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            F:\JDK\1.4.2\bin>REM -hotspot      is a synonym for the “client” VM [deprecated]

            F:\JDK\1.4.2\bin>java -hotspot -Xmx1308M -version

            java version “1.4.2_12″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_12-b03)

            Java HotSpot(TM) Client VM (build 1.4.2_12-b03, mixed mode)

            F:\JDK\1.4.2\bin>java -hotspot -Xmx1309M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap
            F:\JDK\1.5.0\bin>java -version

            java version “1.5.0_07″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)

            Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode, sharing)

            F:\JDK\1.5.0\bin>java -client -Xmx1492M -version

            java version “1.5.0_07″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)

            Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode)

            F:\JDK\1.5.0\bin>java -client -Xmx1493M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            Could not create the Java virtual machine.

            F:\JDK\1.5.0\bin>java -server -Xmx1504M -version

            java version “1.5.0_07″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)

            Java HotSpot(TM) Server VM (build 1.5.0_07-b03, mixed mode)

            F:\JDK\1.5.0\bin>java -server -Xmx1505M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            Could not create the Java virtual machine.

            F:\JDK\1.5.0\bin>REM -hotspot      is a synonym for the “client” VM [deprecated]

            F:\JDK\1.5.0\bin>java -hotspot -Xmx1492M -version

            java version “1.5.0_07″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-b03)

            Java HotSpot(TM) Client VM (build 1.5.0_07-b03, mixed mode)

            F:\JDK\1.5.0\bin>java -hotspot -Xmx1493M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            Could not create the Java virtual machine.

            =====================================================================

            F:\JDK\IBM142\bin>java -version

            java version “1.4.2″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2)

            Classic VM (build 1.4.2, J2RE 1.4.2 IBM Windows 32 build cn1420-20040626 (JIT enabled: jitc))

            F:\JDK\IBM142\bin>REM The default VM is client.

            F:\JDK\IBM142\bin>java -Xmx2047M -version

            java version “1.4.2″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2)

            Classic VM (build 1.4.2, J2RE 1.4.2 IBM Windows 32 build cn1420-20040626 (JIT enabled: jitc))

            F:\JDK\IBM142\bin>java -Xmx2048M -version

            [ Unable to allocate an initial java heap of 2147483648 bytes. ]

            [ **Out of memory, aborting** ]

            [ ]

            [ *** panic: JVMST016: Cannot allocate memory for initial java heap ]

            abnormal program termination
            F:\BEA\JRockit\bin>java -version

            java version “1.4.2_05″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)

            BEA WebLogic JRockit(TM) 1.4.2_05 JVM R24.4.0-1 (build ari-38120-20041118-1131-win-ia32, Native Threads, GC strategy: parallel)

            F:\BEA\JRockit\bin>REM The default VM is jrockit.

            F:\BEA\JRockit\bin>java -Xmx1617M -version

            java version “1.4.2_05″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)

            BEA WebLogic JRockit(TM) 1.4.2_05 JVM R24.4.0-1 (build ari-38120-20041118-1131-win-ia32, Native Threads, GC strategy: parallel)

            F:\BEA\JRockit\bin>java -Xmx1618M -version

            Unable to acquire some virtual address space - reduced from 1656832 to 1640260 KB!

            java version “1.4.2_05″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)

            BEA WebLogic JRockit(TM) 1.4.2_05 JVM R24.4.0-1 (build ari-38120-20041118-1131-win-ia32, Native Threads, GC strategy: parallel)

            F:\BEA\JRockit\bin>REM -jrockit      to select the “jrockit” VM

            F:\BEA\JRockit\bin>java -jrockit -Xmx1617M -version

            java version “1.4.2_05″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)

            BEA WebLogic JRockit(TM) 1.4.2_05 JVM R24.4.0-1 (build ari-38120-20041118-1131-win-ia32, Native Threads, GC strategy: parallel)

            F:\BEA\JRockit\bin>java -jrockit -Xmx1618M -version

            Unable to acquire some virtual address space - reduced from 1656832 to 1640260 KB!

            java version “1.4.2_05″

            Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)

            BEA WebLogic JRockit(TM) 1.4.2_05 JVM R24.4.0-1 (build ari-38120-20041118-1131-win-ia32, Native Threads, GC strategy: parallel)

            我的測試記錄:

            C:\>java -client -Xmx1441M -version

            java version “1.6.0_05″

            Java(TM) SE Runtime Environment (build 1.6.0_05-b13)

            Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode)

            C:\>java -client -Xmx1442M -version

            java version “1.6.0_05″

            Java(TM) SE Runtime Environment (build 1.6.0_05-b13)

            Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode)

            C:\>java -client -Xmx1443M -version

            Error occurred during initialization of VM

            Could not reserve enough space for object heap

            Could not create the Java virtual machine.

            C:\>java -server -Xmx1443M -version

            Error: no `server’ JVM at `C:\Program Files\Java\jre1.6.0_05\bin\server\jvm.dll’

          posted on 2009-12-05 17:15 睫晉姬 閱讀(380) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 晴隆县| 天长市| 调兵山市| 科技| 横山县| 淮阳县| 大丰市| 酒泉市| 湘阴县| 澄城县| 淮安市| 邵阳县| 乌恰县| 威宁| 齐齐哈尔市| 永寿县| 塘沽区| 交口县| 松阳县| 承德县| 印江| 三穗县| 密云县| 黄陵县| 浠水县| 阿尔山市| 霍山县| 土默特左旗| 南通市| 兰州市| 南平市| 伊通| 齐河县| 五寨县| 临清市| 双流县| 合作市| 繁峙县| 崇义县| 石棉县| 尼玛县|