1. 程式人生 > >Java虛擬機器記憶體分配機制與啟動引數說明

Java虛擬機器記憶體分配機制與啟動引數說明

-Xms :表示java虛擬機器堆區記憶體初始記憶體分配的大小,通常為作業系統可用記憶體的1/64大小即可,但仍需按照實際情況進行分配。
-Xmx: 表示java虛擬機器堆區記憶體可被分配的最大上限,通常為作業系統可用記憶體的1/4大小。但是開發過程中,通常會將 -Xms 與 -Xmx兩個引數的配置相同的值,其目的是為了能夠在java垃圾回收機制清理完堆區後不需要重新分隔計算堆區的大小而浪費資源。(PS:當初始堆佔滿後,會嘗試進行GC,如果GC之後還不能得到足夠的記憶體,那麼就會擴充套件堆,如果-Xmx設定的太小,擴充套件堆就會失敗,導致OutOfMemoryError錯誤提示)
 一般來講對於堆區的記憶體分配只需要對上述兩個引數進行合理配置即可,但是如果想要進行更加精細的分配還可以對堆區記憶體進一步的細化,那就要用到下面的三個引數了-XX:newSize、-XX:MaxnewSize、-Xmn。當然這源於對堆區的進一步細化分:新生代、中生代、老生代。
java中每新new一個物件所佔用的記憶體空間就是新生代的空間,當java垃圾回收機制對堆區進行資源回收後,那些新生代中沒有被回收的資源將被轉移到中生代,中生代的被轉移到老生代。而接下來要講述的三個引數是用來控制新生代記憶體大小的。
-XX:newSize:表示新生代初始記憶體的大小,應該小於 -Xms的值;
-XX:MaxnewSize:表示新生代可被分配的記憶體的最大上限;當然這個值應該小於 -Xmx的值;

相關推薦

Java虛擬機器記憶體分配機制啟動引數說明

-Xms :表示java虛擬機器堆區記憶體初始記憶體分配的大小,通常為作業系統可用記憶體的1/64大小即可,但仍需按照實際情況進行分配。-Xmx: 表示java虛擬機器堆區記憶體可被分配的最大上限,通常為作業系統可用記憶體的1/4大小。但是開發過程中,通常會將 -Xms 與 -Xmx兩個引數的配置相同的值,其

java虛擬機器-記憶體分配回收策略

1.物件優先在Eden分配 大多數情況下,物件在新生代Eden區分配。當Eden區沒有足夠空間進行分配時,虛擬機器將發起一次Minor GC。 虛擬機器提供了-XX:+PrintGCDetails這個收集器日誌引數,告訴虛擬機器在傳送垃圾收集行為時列印記憶體回收日誌,並且在

java虛擬機器記憶體分配之新生代老年代GC

1. Java堆中各代分佈: 圖1:Java堆中各代分佈 Young:主要是用來存放新生的物件。 Old:主要存放應用程式中生命週期長的記憶體物件。 Permanent:是指記憶體的永久儲存區域,主要存放Class和Meta的資訊,Class在被 Load的時候被放入PermGen space區域. 它和

Java JVM】Java虛擬機器記憶體分配幾個原則

1、大多數情況下,物件在新生代Eden區中分配。當Eden區沒有足夠空間進行分配時,虛擬機器將發起一次Minor GC 2、大物件直接進入老年代。大物件指需要大量連續記憶體空間的Java物件,最典型的

java虛擬機器記憶體分配原理概述

本文主要介紹在應用發起記憶體申請,到作業系統最終分配記憶體,採用了那些途徑和方法,並比較各種方法的優劣以及使用過程中應該注意那些點。 注意本文都是概述,如想詳細瞭解,需單獨詳細瞭解每一部分內容 1、應用在那些情況下發起記憶體申請 2、記憶體發起申請的步驟(

java虛擬機器記憶體管理機制(一):JVM記憶體管理總結【分享】

近期看了看Java記憶體洩露的一些案例,跟原來的幾個哥們討論了一下,深入研究發現JVM裡面還是有不少以前不知道的細節,這裡稍微剖析一下。先看一看JVM的內部結構——如圖所示,JVM主要包括兩個子系統和兩個元件。兩個子系統分別是Class loader子系統和Execution

深入理解Java虛擬機器--記憶體分配規則

新生代GC(Minor GC):指發生在新生代的垃圾回收動作,因此區域物件大多朝生夕死,所以Minor GC非常頻繁,一般回収速度也比較快 老年代GC(Major GC/Full GC):指發生在老年

深入理解Java虛擬機器——垃圾收集器記憶體分配策略(讀書筆記)

判斷物件是否存活 1、引用計數法 給物件新增一個引用計數器,每當有一個地方引用它時,計數器值加1,當引用失效時,計數器值減1, 任何時刻計數器為0的物件就是不可能再被使用的。 缺點:不能解決物件之間迴圈引用的問題 2、根搜尋演算法(GC Roots Tracing)

深入理解java虛擬機器-垃圾收集器記憶體分配策略

開發十年,就只剩下這套架構體系了! >>>   

學習筆記1:深入理解Java虛擬機器——JVM高階特性最佳實踐_OOM(記憶體溢位)_虛擬機器引數設定_MAT

eclipse中設定debug標籤頁的vm引數 1,Run->Debug configurations->Java Application 2,選中已經寫好的專案 3,Arguments->VM arguments 4,在VM arguments 裡面就可以對虛擬機器的

學習筆記1:深入理解Java虛擬機器——JVM高階特性最佳實踐_走進java_java記憶體區域記憶體溢位異常

第一部分:走進java Java虛擬機器 程式碼在華章下載 jdk釋出了六個命令列工具和兩個視覺化故障處理工具。 推薦書籍 設計原本 領域特定語言 現在著名的Java虛擬機器 hotspot vm(預設) jrockit vm j9 vm jdk sun jdk op

Java虛擬機器 記憶體管理垃圾回收

java和C++之間有一堵由記憶體自動分配與垃圾回收所圍成的高牆,外面的人想進來,裡面的人想出去 主要內容 記憶體分佈 垃圾回收機制 垃圾收集器 Java記憶體分佈 當java虛擬機器執行程式時,會把由虛擬機器管理的記憶體劃分為不同的區域,他們的作用不同,建立和銷燬時間也不同,有的是虛擬

《深入理解Java虛擬機器—JVM高階特性實踐 周志 著》之第2章 Java記憶體區域記憶體溢位異常

1、Java虛擬機器所管理的記憶體包括以下幾個執行時資料區域: 2、程式計數器:          1. 可以看作是當前執行緒所執行的位元組碼的行號指示器,是一塊較小的記憶體空間;  &nbs

Java虛擬機器記憶體模型執行緒

Java虛擬機器—記憶體模型與執行緒 Lyon Keep balance,Be a better man! ​關注他 3 人讚了該文章 前言: 本文主要介紹Java的記憶體模型和Java執行緒。 Java記憶體模型的主要目標是定義程式中各個變數的訪問規則,即在JVM

Java記憶體回收知識(讀書筆記)--深入理解Java虛擬機器——JVM高階特性最佳實踐(第2版)2.2~2.3

1.哪些地方的記憶體要回收? Java程式運時的記憶體包括以下幾部分:程式計數器,Java虛擬機器棧,本地方法棧,Java堆,方法區(執行時常量池是方法區的一部分)。 程式計數器,Java虛擬機器棧,本地方法棧是隨執行緒而生,隨執行緒而亡,它們的分配的記憶體大小已知,因此不

深入理解Java虛擬機器JVM高階特性最佳實踐閱讀總結—— 第十二章 Java記憶體模型執行緒

Java記憶體模型JMM,主要目標是定義程式中各個變數的訪問規則,即在虛擬機器中將變數儲存到記憶體和從記憶體讀取變數的底層細節,這裡的變數不包括執行緒私有的變數,如區域性引數;記憶體模型規定所有變數儲存在主記憶體;每個執行緒都有自己的工作記憶體,其中儲存了該執行緒用到的變數

探祕Java虛擬機器——記憶體管理垃圾回收

本文主要是基於Sun JDK 1.6 Garbage Collector(作者:畢玄)的整理與總結,原文請讀者在網上搜索。 1、Java虛擬機器執行時的資料區 2、常用的記憶體區域調節引數 -Xms:初始堆大小,預設為實體記憶體的1/64(<1GB);預設(MinHeapFreeRatio引數可以調

Java虛擬機器記憶體管理(二)--垃圾收集器及記憶體分配策略

概述     Java記憶體執行時區域的各個部分,其中程式計數器、虛擬機器棧、本地方法棧3個區域隨執行緒而生,隨執行緒而滅;棧中的棧幀隨著方法的進入和退出而有條不紊地執行著出棧和入棧操作。每一個棧幀中分配多少記憶體基本上是在類結構確定下來時就已知的(儘管在執行期會由JIT編

《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體

《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體 最近在讀《深入理解Java虛擬機器》,網上對Java虛擬機器的總結有很多,自己覺得自己也應該記錄一點個人的讀書總結,以便日後複習方便。 隨著開發工作的逐漸深入,對Java的理解不能止步於crud,Java不像C語言

java虛擬機器(第二版) 第二章總結 (三)-手工復現java虛擬機器記憶體溢位(OutOfMemoryError異常)

  文章概述 的java虛擬機器記憶體溢位的簡要概述,復現堆記憶體,棧記憶體,方法區的執行時常量池記憶體等區域的溢位情況,以及上述區域發生記憶體溢位的判斷方式和解決思路。   1,概述:      IDE為eclipse,需要在執