1. 程式人生 > >JVM中堆空間劃分、引數設定

JVM中堆空間劃分、引數設定

上圖中,刻畫了Java程式執行時的堆空間,可以簡述成如下2條

1.JVM中堆空間可以分成三個大區,新生代、老年代、永久代

2.新生代可以劃分為三個區,Eden區,兩個倖存區

在JVM執行時,可以通過配置以下引數改變整個JVM堆的配置比例

1.JVM執行時堆的大小

  -Xms堆的最小值

  -Xmx堆空間的最大值

2.新生代堆空間大小調整

  -XX:NewSize新生代的最小值

  -XX:MaxNewSize新生代的最大值

  -XX:NewRatio設定新生代與老年代在堆空間的大小

  -XX:SurvivorRatio新生代中Eden所佔區域的大小

3.永久代大小調整

  -XX
:MaxPermSize 4.其他   -XX:MaxTenuringThreshold,設定將新生代物件轉到老年代時需要經過多少次垃圾回收,但是仍然沒有被回收
在上面的配置中,老年代所佔空間的大小是由-XX:SurvivorRatio這個引數進行配置的,看完了上面的JVM堆空間分配圖,可能會奇怪,為啥新生代空間要劃分為三個區Eden及兩個Survivor區?有何用意?為什麼要這麼分?要理解這個問題,就得理解一下JVM的垃圾收集機制(複製演算法也叫copy演算法)

相關推薦

JVM空間劃分引數設定

上圖中,刻畫了Java程式執行時的堆空間,可以簡述成如下2條 1.JVM中堆空間可以分成三個大區,新生代、老年代、永久代 2.新生代可以劃分為三個區,Eden區,兩個倖存區 在JVM執行時,可以通過配置以下引數改變整個JVM堆的配置比例 1.JVM執行時堆的大小  

詳解JVM方法區(對象值)是如何調用執行的

沒有 自定義 成了 coo 裏的 原始類型 元素 動手 完成 這兩天看了一下深入淺出JVM這本書,推薦給高級的java程序員去看,對你了解JAVA的底層和運行機制有比較大的幫助。 先了解具體的概念:JAVA的JVM的內存可分為3個區:堆(heap)、棧(stack)和方法區

Oracle修改表空間大小,以及引數設定

問題描述 在向orale資料庫匯入資料的時候報 ORA-01658: 無法為表空間 XXX中的段建立 INITIAL 區錯誤。 這是由於表空間對應的資料檔案中資料量超過Oracle在建立表空間的時候資料檔案初始化大小值,當資料量達到這個值,再向資料庫中匯入資料就會報錯。

第19課:JVMSerial收集器ParNew收集器Parallel收集器解析

內容:     1.Serial收集器     2.ParNew收集器     3.Parallel收集器 一、三種收集器解析     Serial收集器:單執行緒的方式,序列的方式,一般在新生代

【MySQL】多表聯合查詢(新增查詢欄位引數設定

所羅門王說:沒有智慧解決不了的問題。SELECT * from tb_corporation_and_user      人員所在團隊 (`user_id`, `corporation_id` ,  `role_id` ) SELECT * from tb_corporati

關於HTML5Canvas的寬設定有關問題

Canvas元素預設寬 300px, 高 150px, 設定其寬高可以使用如下方法: 方法一: 1 方法二:使用HTML5 Canvas API操作 OK 1 var canvas = document.getElementById(‘欲操作canvas的id’); 2 canvas.wi

Java JVM ,棧,方法區 詳解

一 jvm執行時資料區有哪些 我們先來看一張圖 JVM執行時資料區分類 1. JVM棧 (Java Virtual Machine Stacks) 2. 堆記憶體 (Heap Memory) 3. 方法區 (Method Area) 4.

JVM記憶體和棧記憶體詳解

java中記憶體分配策略及堆和棧的比較  1 記憶體分配策略   按照編譯原理的觀點,程式執行時的記憶體分配有三種策略,分別是靜態的,棧式的,和堆式的. 靜態儲存分配是指在編譯時就能確定每個資料目標在執行時刻的儲存空間需求,因而在編譯時就可以給他們分配固定的記憶體空間.這種分配策略要求程式程式碼中不允許有可變

聚類方法:DBSCAN演算法研究(1)--DBSCAN原理流程引數設定優缺點以及演算法

DBSCAN聚類演算法三部分: 1、        DBSCAN原理、流程、引數設定、優缺點以及演算法; 2、        matlab程式碼實現; 3、        C++程式碼實現及與matlab例項結果比較。 DBSCAN(Density-based

關於HTML5Canvas的寬設定問題

Canvas元素預設寬 300px, 高 150px, 設定其寬高可以使用如下方法: 方法一: 1 <canvas width="500" height="500"></canvas> 方法二:使用HTML5 Canvas API操作 OK 1 var

JVM和棧的區別

動態分配內存 分配內存 err ava error tof over 可用 flow 1、棧是線程私有的;堆事線程公有的。2、棧主要用於存儲局部變量和對象的引用變量;堆主要用於存儲實例化的對象,數組,由JVM動態分配內存空間。3、棧中的變量超過其作用域後,JVM會自動釋放掉

Bootstrap-table實現查詢分頁匯出引數設定及前後端程式碼示例詳解

$(function(){ initTable(); }); function initTable() { //先銷燬表格 $("#bootstrapTable").bootstrapTable({ //表格高度 height: getHeight

JVM引數設定分析

不管是YGC還是Full GC,GC過程中都會對導致程式執行中中斷,正確的選擇不同的GC策略,調整JVM、GC的引數,可以極大的減少由於GC工作,而導致的程式執行中斷方面的問題,進而適當的提高Java程式的工作效率。但是調整GC是以個極為複雜的過程,由於各個程式

C#的棧和值型別與引用型別引數引用引數輸出引數引數陣列

程式執行時,資料必須儲存在記憶體中,一個數據需要多大的記憶體、儲存的位置、如何儲存依賴於該資料的資料型別。執行中的程式使用兩個記憶體區域來儲存資料:棧和堆。 棧:                 棧是一

使用SMARTFORM欄位引數設定解決SMARTFORM數量金額欄位顯示問題

在SMARTFORM中,數量和金額型別的欄位在顯示的時候會和其他欄位不在同一個水平面上,解決的方法:&ITAB-MENGE(C)&  ,下面是SMARTFORM欄位引數設定的幾個注意事項: 1、使用SFSY-FORMPAGES顯示總頁數的時候,如果頁數大於9

JVM的新生代和老年代(Eden空間兩個Survior空間

現有的主流JVM分別是HotSpot和JRockit,主要研究物件也是這兩個。這篇文章裡,我們只研究HotSpot,也就是所謂的Sun JVM。目前階段,Sun的GC方式主要有CMS和G1兩種。考慮到效果和實際應用,這裡只介紹CMS。CMS,全稱Concurrent Low

JVM系列:JVM引數設定分析

不管是YGC還是Full GC,GC過程中都會對導致程式執行中中斷,正確的選擇不同的GC策略,調整JVM、GC的引數,可以極大的減少由於GC工作,而導致的程式執行中斷方面的問題,進而適當的提高Java程式的工作效率。但是調整GC是以個極為複雜的過程,由於各個程式具備不同的特點

JVM除錯追引數設定

引言: JVM提供了諸多的引數配置,打印出當前JVm的各類資訊,方便後續進行Java應用的排查,本文將詳細介紹若干常用的JVM除錯追蹤引數。 測試環境說明: JVM JDK8, Windows 7, STS 3.8.0, 特別說明:  每一代的JDK打印出來的資訊各有不同的

SpringBoot 啟動引數設定環境變數JVM引數tomcat遠端除錯

java命令的模版:java [-options] -jar jarfile [args...] 先貼一下我的簡單的啟動命令: java -Xms128m -Xmx256m -Xdebug -Xrunjdwp:server=y,transport=dt_socket,

JVM的記憶體區域劃分-- 方法區本地方法棧程式計數器

                          JVM的記憶體區域劃分   學過C語言的朋友都知道C編譯器在劃分記憶體區域的時候經常將管理的區域劃分為資料段和程式碼段,資料段包括堆、棧以及靜態資料區。那麼在Java語言當中,記憶體又是如何劃分的呢?   由於Jav