9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>學習電腦>電腦硬件知識>內存知識>

JVM 內存設置大小

時間: 捷鋒774 分享

  JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。下面是學習啦小編帶來的關于JVM 內存設置大小的內容,歡迎閱讀!

  JVM 內存設置大小:

  Eclipse崩潰,錯誤提示:

  MyEclipse has detected that less than 5% of the 64MB of Perm

  Gen (Non-heap memory) space remains. It is strongly recommended

  that you exit and restart MyEclipse with new virtual machine memory

  paramters to increase this memory. Failure to do so can result in

  data loss. The recommended Eclipse memory parameters are:

  eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

  1.參數的含義

  -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

  -vmargs 說明后面是VM的參數,所以后面的其實都是JVM的參數了

  -Xms128m JVM初始分配的堆內存

  -Xmx512m JVM最大允許分配的堆內存,按需分配

  -XX:PermSize=64M JVM初始分配的非堆內存

  -XX:MaxPermSize=128M JVM最大允許分配的非堆內存,按需分配

  我們首先了解一下JVM內存管理的機制,然后再解釋每個參數代表的含義。

  1)堆(Heap)和非堆(Non-heap)內存

  按照官方的說法:“Java 虛擬機具有一個堆,堆是運行時數據區域,所有類實例和數組的內存均從此處分配。堆是在 Java 虛擬機啟動時創建的。”“在JVM中堆之外的內存稱為非堆內存(Non-heap memory)”。

  可以看出JVM主要管理兩種類型的內存:堆和非堆。簡單來說堆就是Java代碼可及的內存,是留給開發人員使用的;非堆就是JVM留給自己用的,

  所以方法區、JVM內部處理或優化所需的內存(如JIT編譯后的代碼緩存)、每個類結構(如運行時常數池、字段和方法數據)以及方法和構造方法的代碼都在非堆內存中。

  堆內存分配

  JVM初始分配的堆內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的堆內存由-Xmx指定,默認是物理內存的1/4。默認空余堆內存小于40%時,JVM就會增大堆直到-Xmx的最大限制;

  空余堆內存大于70%時,JVM會減少堆直到-Xms的最小限制。因此服務器一般設置-Xms、-Xmx 相等以避免在每次GC 后調整堆的大小。

  說明:如果-Xmx 不指定或者指定偏小,應用可能會導致java.lang.OutOfMemory錯誤,此錯誤來自JVM,不是Throwable的,無法用try...catch捕捉。

  非堆內存分配

  JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。(還有一說:MaxPermSize缺省值和-server -client選項相關,

  -server選項下默認MaxPermSize為64m,-client選項下默認MaxPermSize為32m。這個我沒有實驗。)

  上面錯誤信息中的PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。還沒有弄明白PermGen space是屬于非堆內存,還是就是非堆內存,但至少是屬于了。

  XX:MaxPermSize設置過小會導致java.lang.OutOfMemoryError: PermGen space 就是內存益出。

  說說為什么會內存益出:

  (1)這一部分內存用于存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不同。

  (2)GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS 的話,就很可能出現PermGen space錯誤。

  這種錯誤常見在web服務器對JSP進行pre compile的時候。

  2)JVM內存限制(最大值)

  首先JVM內存限制于實際的最大物理內存,假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關系。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,

  這個限制一般是2GB-3GB(一般來說Windows系統下為1.5G-2G,Linux系統下為2G-3G),而64bit以上的處理器就不會有限制了。

  2. 為什么有的機器我將-Xmx和-XX:MaxPermSize都設置為512M之后Eclipse可以啟動,而有些機器無法啟動?

  通過上面對JVM內存管理的介紹我們已經了解到JVM內存包含兩種:堆內存和非堆內存,另外JVM最大內存首先取決于實際的物理內存和操作系統。所以說設置VM參數導致程序無法啟動主要有以下幾種原因:

  1) 參數中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;

  2) -Xmx的值和-XX:MaxPermSize的總和超過了JVM內存的最大限制,比如當前操作系統最大內存限制,或者實際的物理內存等等。說到實際物理內存這里需要說明一點的是,

  如果你的內存是1024MB,但實際系統中用到的并不可能是1024MB,因為有一部分被硬件占用了。

  3. 為何將上面的參數寫入到eclipse.ini文件Eclipse沒有執行對應的設置?

  那為什么同樣的參數在快捷方式或者命令行中有效而在eclipse.ini文件中是無效的呢?這是因為我們沒有遵守eclipse.ini文件的設置規則:

  參數形如“項 值”這種形式,中間有空格的需要換行書寫,如果值中有空格的需要用雙引號包括起來。比如我們使用-vm C:/Java/jre1.6.0/bin/javaw.exe參數設置虛擬機,

  在eclipse.ini文件中要寫成這樣:

  -vm

  C:/Java/jre1.6.0/bin/javaw.exe

  -vmargs

  -Xms128M

  -Xmx512M

  -XX:PermSize=64M

  -XX:MaxPermSize=128M

  實際運行的結果可以通過Eclipse中“Help”-“About Eclipse SDK”窗口里面的“Configuration Details”按鈕進行查看。

  另外需要說明的是,Eclipse壓縮包中自帶的eclipse.ini文件內容是這樣的:

  -showsplash

  org.eclipse.platform

  --launcher.XXMaxPermSize

  256m

  -vmargs

  -Xms40m

  -Xmx256m

  其中–launcher.XXMaxPermSize(注意最前面是兩個連接線)跟-XX:MaxPermSize參數的含義基本是一樣的,我覺得唯一的區別就是前者是eclipse.exe啟動的時候設置的參數,

  而后者是eclipse所使用的JVM中的參數。其實二者設置一個就可以了,所以這里可以把–launcher.XXMaxPermSize和下一行使用#注釋掉。

  4. 其他的啟動參數。 如果你有一個雙核的CPU,也許可以嘗試這個參數:

  -XX:+UseParallelGC

  讓GC可以更快的執行。(只是JDK 5里對GC新增加的參數)

  補充:

  如果你的WEB APP下都用了大量的第三方jar,其大小超過了服務器jvm默認的大小,那么就會產生內存益出問題了。

  解決方法: 設置MaxPermSize大小

  可以在myelipse里選中相應的服務器比如tomcat5,展開里面的JDK子項頁面,來增加服務器啟動的JVM參數設置:

  -Xms128m

  -Xmx256m

  -XX:PermSize=128M

  -XX:MaxNewSize=256m

  -XX:MaxPermSize=256m

  或者手動設置MaxPermSize大小,比如tomcat,

  修改TOMCAT_HOME/bin/catalina.bat,在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:

  JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

  建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以減少jar 文檔重復占用內存

看了JVM 內存設置大小文章內容的人還看:

1.堆和棧的區別

2.基于多平臺的移動終端網絡應用探析

672061 主站蜘蛛池模板: 一级片一区二区中文字幕| 强奷漂亮人妻系列老师| 国产一区二三区日韩精品| 免费无码av片在线观看播放| 精品久久人人妻人人做精品| 在线观看成人av天堂不卡 | 日韩精品亚洲专区在线播放| 亚洲av成人在线一区| 中文亚洲成A人片在线观看| 在线播放国产精品一品道| 2019国产精品青青草原| 十八禁国产精品一区二区| 漂亮人妻被强中文字幕久久| 秋霞电影网| 国产精品人成视频免费国产| 亚洲欧美成人久久综合中文网| 无码人妻一区二区三区兔费| 麻豆国产成人AV在线播放| 精品一区二区三区女性色| 精选国产av精选一区二区三区| 成年美女黄网站色大片免费看| 97久久精品人人做人人爽| 亚洲综合精品一区二区三区| 日韩a∨精品日韩在线观看| 亚洲成A人片在线观看无码不卡 | 久久精品a亚洲国产v高清不卡| 国产乱码精品一区二三区| 性男女做视频观看网站| 中文字幕av无码免费一区| 亚洲综合中文字幕首页| 亚洲av无码一区二区三区网站| 国产69久久精品成人看| 67194熟妇在线观看线路| 亚洲AV日韩AV永久无码下载| 精品尤物TV福利院在线网站| 免费观看全黄做爰大片| 在线中文字幕国产一区| 国产亚洲日韩在线aaaa| 久久精品人妻无码一区二区三| 99精品国产在热久久无| 无码精品人妻一区二区三区中|