JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
生活随笔
收集整理的這篇文章主要介紹了
JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參數設置背景 ? ?
在做java開發時尤其是大型軟件開發時經常會遇到內存溢出的問題,比如說OutOfMemoryError等。這是個讓開發人員很痛苦、也很糾結的問題,因為我們有時不知道什么樣的操作導致了這種問題的發生。所以我們不得不通過不斷的審查、優化自己的代碼結構。但是有時我們會發現有些時候不單單是通過重構自身的代碼就能夠解決這樣的問題,因為也可能是由于我們對java虛擬機運行時的內存分配的不得當導致了內存溢出現象的不斷發生。
為了解決這一問題,java開發團隊提供了一個用戶自定義的方式按需配置java虛擬機運行時的所需的內存——通過參數配置的形式實現參數分配自定義化。
JVM按照其存儲數據的內容將所需內存分配為堆區與非堆區兩個部分:- 堆區即為通過new的方式創建的對象(類實例)所占用的內存空間
- 非堆區即為代碼、常量、外部訪問(如文件訪問流所占資源)等
常見參數種類(配置內存)
- 配置堆區:-Xms 、-Xmx、-XX:newSize、-XX:MaxnewSize、-Xmn
- 配置非堆區:-XX:PermSize、-XX:MaxPermSize
堆區參數配置
1、-Xms :表示java虛擬機堆區內存初始內存分配的大小,通常為操作系統可用內存的1/64大小即可,但仍需按照實際情況進行分配。有可能真的按照這樣的一個規則分配時,設計出的軟件還沒有能夠運行得起來就掛了。2、-Xmx: 表示java虛擬機堆區內存可被分配的最大上限,通常為操作系統可用內存的1/4大小。但是開發過程中,通常會將 -Xms 與 -Xmx兩個參數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區后不需要重新分隔計算堆區的大小而浪費資源。 一般來講對于堆區的內存分配只需要對上述兩個參數進行合理配置即可。
非堆區參數配置
1、-XX:PermSize:表示非堆區初始內存分配大小,其縮寫為permanent size(持久化內存)2、-XX:MaxPermSize:表示對非堆區分配的內存的最大上限 注: ? ? 在配置之前一定要慎重的考慮一下自身軟件所需要的非堆區內存大小,因為此處內存是不會被java垃圾回收機制進行處理的地方。并且更加要注意的是 最大堆內存與最大非堆內存的和絕對不能夠超出操作系統的可用內存。 參考:http://blog.csdn.net/kok1992/article/details/44774967
轉載于:https://www.cnblogs.com/kaituorensheng/p/6551457.html
總結
以上是生活随笔為你收集整理的JAVA -Xms -Xmx -XX:PermSize -XX:MaxPermSize 区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP+MySQL登录注册,完整版,详细
- 下一篇: 小学四则运算界面版