Some of the default values for Sun JVMs are listed below
JDK
_
Initial Size Maximum Size
Client JVM
MB
MB
Server JVM
MB
MB
JDK
_
Initial Size Maximum Size
Client JVM
MB
MB
Server JVM
MB
MB
JDK
Initial Size Maximum Size
Client JVM
MB
MB
Server JVM
MB
MB
JDK
Initial Size Maximum Size
Client JVM
MB
MB
Server JVM
MB
MB
以下是sun公司的性能優化白皮書中提到的幾個例子
對於吞吐量的調優
機器配置
G的內存
個線程並發能力
java
Xmx
m
Xms
m
Xmn
g
Xss
k
XX:+UseParallelGC
XX:ParallelGCThreads=
Xmx
m
Xms
m 配置了最大Java Heap來充分利用系統內存
Xmn
g 創建足夠大的青年代(可以並行被回收)充分利用系統內存
防止將短期對象復制到老年代
Xss
減少默認最大的線程棧大小
提供更多的處理虛擬內存地址空間被進程使用
XX:+UseParallelGC 采用並行垃圾收集器對年青代的內存進行收集
提高效率
XX:ParallelGCThreads=
減少垃圾收集線程
默認是和服務器可支持的線程最大並發數相同
往往不需要配置到最大值
嘗試采用對老年代並行收集
java
Xmx
m
Xms
m
Xmn
g
Xss
k
XX:+UseParallelGC
XX:ParallelGCThreads=
XX:+UseParallelOldGC
Xmx
m
Xms
m 內存分配被減小
因為ParallelOldGC會增加對於Native Heap的需求
因此需要減小Java Heap來滿足需求
XX:+UseParallelOldGC 采用對於老年代並發收集的策略
可以提高收集效率
提高吞吐量
減少應用停頓時間
java
Xmx
m
Xms
m
Xmn
g
Xss
k
XX:ParallelGCThreads=
XX:+UseConcMarkSweepGC
XX:+UseParNewGC
XX:SurvivorRatio=
XX:TargetSurvivorRatio=
XX:MaxTenuringThreshold=
XX:+UseConcMarkSweepGC
XX:+UseParNewGC 選擇了並發標記交換收集器
它可以並發執行收集操作
降低應用停止時間
同時它也是並行處理模式
可以有效地利用多處理器的系統的多進程處理
XX:SurvivorRatio=
XX:MaxTenuringThreshold=
表示在青年代中Eden和Survivor比例
設置增加了Survivor的大小
越大的survivor空間可以允許短期對象盡量在年青代消亡
XX:TargetSurvivorRatio=
允許
%的空間被占用
超過默認的
%
提高對於survivor的使用率
JAVA的JVM的內存可分為
個區(常用的
一共有
個)
堆(heap)
棧(stack)和方法區(method)
堆區
存儲的全部是對象
每個對象都包含一個與之對應的class的信息
(class的目的是得到操作指令)
jvm只有一個堆區(heap)被所有線程共享
堆中不存放基本類型和對象引用
只存放數據
棧區
每個線程包含一個棧區
棧中只保存原始類型數據和對象和對象引用(不是對象)
對象都存放在堆區中
每個棧中的數據(原始類型和對象引用)都是私有的
其他棧不能訪問
棧分為
個部分
基本類型變量區
執行環境上下文
操作指令區(存放操作指令)
方法區
又叫靜態區
跟堆一樣
被所有的線程共享
方法區包含所有的class和static變量
方法區中包含的都是在整個程序中永遠唯一的元素
如class
static變量
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26382.html