來指定這個比列。
server端jvm最好將-xms和-xmx設為相同值,避免每次垃圾**完成後jvm重新分配記憶體,也可以減少垃圾**次數
;開發測試機jvm可以保留預設值。(例如:-xms4g)。
-xx:minheapfreeration=
來指定這個比列。最佳設值應該視物理記憶體大小及計算機內其他記憶體開銷而定。(例如:-xmx4g)
,-xms和-xmx設為不同和相同值,用**對比一下,看看**次數的變化:
2.-xx:+useserialgc(序列垃圾**器,預設,可以不配置)
,minor gc(垃圾**)會消耗資源,系統就會變得卡頓
)class
jvmtest
public
static string tom(long
bytenum)
public
static
void
jvminfo()
}解釋:[gc [defnew: 273088k(新生代垃圾**之前的值) -> 5561k(新生代垃圾**之後的值)(307200k), 0.0186715 secs] 278084k(堆記憶體垃圾**之前的值) -> 10558k(堆記憶體垃圾**之後的值)(989888k), 0.0187027 secs] [times: user=0.02 sys=0.00, real=0.02 secs]
jdk1.4以後將-xx:newsize和-xx:maxnewsize合一
,因為我們設定他們的時候也建議設定一樣大)
young區大小(新生代)
。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小(相對於hotspot 型別的虛擬機器來說)。持久代一般固定大小為64m,所以增大年輕代後,將會減小年老代大小。此值對系統效能影響較大,sun官方推薦配置為整個堆的3/8。(例如:-xmn2g)
-xx:pretenuresizethreshold=1024
(單位為位元組,預設為0)來代表超過多大時就不在新生代分配,而是直接在老年代分配。
在相同物理記憶體下,減小這個值能生成更多的執行緒。
但是作業系統對乙個程序內的執行緒數還是有限制的,不能無限生成,
經驗值在3000~5000左右。(推薦:小系統:-xss128k,大系統:-xss256k)
有關記憶體分布
linux下程序的記憶體分布 核心空間 棧 棧的下面有預留空間,棧記憶體方向向低位址延伸 動態鏈結對映區 堆 堆的上方有預留空間,堆記憶體方向向高位址延伸 讀寫部分 唯讀部分 預留空間 棧 例項 棧頂 0xbfffffff 0xbffffffb 0xbffffff8 0xbffffff4 esp暫存...
個人有關記憶體的思考
對於應用程式而言,記憶體中儲存區域大致有堆 棧 靜態區域三個部分。系統在分配記憶體的時候,會在記憶體中尋找乙個能夠滿足申請大小的區域進行標記,並返回此區域的大小。在應用程式執行時,系統為應用程式分配的只是虛擬的位址空間,並不是實際的物理儲存器。這就需要給程序預定的區域 位址空間 調撥物理儲存器 記憶...
有關記憶體對齊的問題
1 某個成員距離首位置的偏移量最小是該成員大小的一倍。2 所有成員的大小之和應該是最大成員大小的整數倍。為什麼要記憶體對齊?點這裡 來段 解釋下 我們接下來就來解釋為什麼stu1和stu2分別是8和12,主要還是我們的兩個規則 注意 下面的表示方法,例如short b 就會在兩個位元組中填b,表示占...