成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個性能較好的JVM參數(shù)配置

開發(fā) 后端
G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的長遠(yuǎn)目標(biāo)時代替CMS收集器。G1收集器是一個并行的、并發(fā)的和增量式壓縮短暫停頓的垃圾收集器。G1收集器和其他的收集器運 行方式不一樣,不區(qū)分年輕代和年老代空間。

一個性能較好的web服務(wù)器jvm參數(shù)配置:

-server //服務(wù)器模式
-Xmx2g //JVM***允許分配的堆內(nèi)存,按需分配
-Xms2g //JVM初始分配的堆內(nèi)存,一般和Xmx配置成一樣以避免每次gc后JVM重新分配內(nèi)存。
-Xmn256m //年輕代內(nèi)存大小,整個JVM內(nèi)存=年輕代 + 年老代 + 持久代
-XX:PermSize=128m //持久代內(nèi)存大小
-Xss256k //設(shè)置每個線程的堆棧大小
-XX:+DisableExplicitGC //忽略手動調(diào)用GC, System.gc()的調(diào)用就會變成一個空調(diào)用,完全不觸發(fā)GC
-XX:+UseConcMarkSweepGC //并發(fā)標(biāo)記清除(CMS)收集器
-XX:+CMSParallelRemarkEnabled //降低標(biāo)記停頓
-XX:+UseCMSCompactAtFullCollection //在FULL GC的時候?qū)δ昀洗膲嚎s
-XX:LargePageSizeInBytes=128m //內(nèi)存頁的大小
-XX:+UseFastAccessorMethods //原始類型的快速優(yōu)化
-XX:+UseCMSInitiatingOccupancyOnly //使用手動定義初始化定義開始CMS收集
-XX:CMSInitiatingOccupancyFraction=70 //使用cms作為垃圾回收使用70%后開始CMS收集

說明:

-Xmn和-Xmx之比大概是1:9,如果把新生代內(nèi)存設(shè)置得太大會導(dǎo)致young gc時間較長

一個好的Web系統(tǒng)應(yīng)該是每次http請求申請內(nèi)存都能在young gc回收掉,full gc永不發(fā)生,當(dāng)然這是最理想的情況

xmn的值應(yīng)該是保證夠用(夠http并發(fā)請求之用)的前提下設(shè)置得盡量小

web服務(wù)器和游戲服務(wù)器的配置思路不太一樣,最重要的區(qū)別是對游戲服務(wù)器的xmn即年輕代設(shè)置比較大,和Xmx大概1:3的關(guān)系,因為游戲服務(wù)器一般是長連接,在保持一定的并發(fā)量后需要較大的年輕代堆內(nèi)存,如果設(shè)置得大小了會經(jīng)常引發(fā)young gc

對JVM的簡介

一個性能較好的jvm參數(shù)配置以及jvm的簡介

由上圖可以看出JVM堆內(nèi)存的分類情況,JVM內(nèi)存被分成多個獨立的部分。

廣泛地說,JVM堆內(nèi)存被分為兩部分——年輕代(Young Generation)和老年代(Old Generation)。

年輕代

年輕代是所有新對象產(chǎn)生的地方。當(dāng)年輕代內(nèi)存空間被用完時,就會觸發(fā)垃圾回收。這個垃圾回收叫做Minor GC。年輕代被分為3個部分——Enden區(qū)和兩個Survivor區(qū)。

年輕代空間的要點:

大多數(shù)新建的對象都位于Eden區(qū)。

當(dāng)Eden區(qū)被對象填滿時,就會執(zhí)行Minor GC。并把所有存活下來的對象轉(zhuǎn)移到其中一個survivor區(qū)。

Minor GC同樣會檢查存活下來的對象,并把它們轉(zhuǎn)移到另一個survivor區(qū)。這樣在一段時間內(nèi),總會有一個空的survivor區(qū)。

經(jīng)過多次GC周期后,仍然存活下來的對象會被轉(zhuǎn)移到年老代內(nèi)存空間。通常這是在年輕代有資格提升到年老代前通過設(shè)定年齡閾值來完成的。

年老代

年老代內(nèi)存里包含了長期存活的對象和經(jīng)過多次Minor GC后依然存活下來的對象。通常會在老年代內(nèi)存被占滿時進(jìn)行垃圾回收。老年代的垃圾收集叫做Major GC。Major GC會花費更多的時間。

Stop the World事件

所有的垃圾收集都是“Stop the World”事件,因為所有的應(yīng)用線程都會停下來直到操作完成(所以叫“Stop the World”)。

因為年輕代里的對象都是一些臨時(short-lived )對象,執(zhí)行Minor GC非常快,所以應(yīng)用不會受到(“Stop the World”)影響。

由于Major GC會檢查所有存活的對象,因此會花費更長的時間。應(yīng)該盡量減少Major GC。因為Major GC會在垃圾回收期間讓你的應(yīng)用反應(yīng)遲鈍,所以如果你有一個需要快速響應(yīng)的應(yīng)用發(fā)生多次Major GC,你會看到超時錯誤。

垃圾回收時間取決于垃圾回收策略。這就是為什么有必要去監(jiān)控垃圾收集和對垃圾收集進(jìn)行調(diào)優(yōu)。從而避免要求快速響應(yīng)的應(yīng)用出現(xiàn)超時錯誤。

***代

***代或者“Perm Gen”包含了JVM需要的應(yīng)用元數(shù)據(jù),這些元數(shù)據(jù)描述了在應(yīng)用里使用的類和方法。注意,***代不是Java堆內(nèi)存的一部分。

***代存放JVM運行時使用的類。***代同樣包含了Java SE庫的類和方法。***代的對象在full GC時進(jìn)行垃圾收集。

方法區(qū)

方法區(qū)是***代空間的一部分,并用來存儲類型信息(運行時常量和靜態(tài)變量)和方法代碼和構(gòu)造函數(shù)代碼。

內(nèi)存池

如果JVM實現(xiàn)支持,JVM內(nèi)存管理會為創(chuàng)建內(nèi)存池,用來為不變對象創(chuàng)建對象池。字符串池就是內(nèi)存池類型的一個很好的例子。內(nèi)存池可以屬于堆或者***代,這取決于JVM內(nèi)存管理的實現(xiàn)。

運行時常量池

運行時常量池是每個類常量池的運行時代表。它包含了類的運行時常量和靜態(tài)方法。運行時常量池是方法區(qū)的一部分。

Java棧內(nèi)存

Java棧內(nèi)存用于運行線程。它們包含了方法里的臨時數(shù)據(jù)、堆里其它對象引用的特定數(shù)據(jù)。

Java垃圾回收

Java垃圾回收會找出沒用的對象,把它從內(nèi)存中移除并釋放出內(nèi)存給以后創(chuàng)建的對象使用。Java程序語言中的一個***優(yōu)點是自動垃圾回收,不像其他的程序語言那樣需要手動分配和釋放內(nèi)存,比如C語言。

垃圾收集器是一個后臺運行程序。它管理著內(nèi)存中的所有對象并找出沒被引用的對象。所有的這些未引用的對象都會被刪除,回收它們的空間并分配給其他對象。

一個基本的垃圾回收過程涉及三個步驟

標(biāo)記:這是***步。在這一步,垃圾收集器會找出哪些對象正在使用和哪些對象不在使用。

正常清除:垃圾收集器清會除不在使用的對象,回收它們的空間分配給其他對象。

壓縮清除:為了提升性能,壓縮清除會在刪除沒用的對象后,把所有存活的對象移到一起。這樣可以提高分配新對象的效率。

簡單標(biāo)記和清除方法存在兩個問題:

效率很低。因為大多數(shù)新建對象都會成為“沒用對象”。

經(jīng)過多次垃圾回收周期的對象很有可能在以后的周期也會存活下來。

上面簡單清除方法的問題在于Java垃圾收集的分代回收的,而且在堆內(nèi)存里有年輕代和年老代兩個區(qū)域。

Java垃圾回收類型

這里有五種可以在應(yīng)用里使用的垃圾回收類型。

僅需要使用JVM開關(guān)就可以在我們的應(yīng)用里啟用垃圾回收策略。

Serial GC(-XX:+UseSerialGC):Serial GC使用簡單的標(biāo)記、清除、壓縮方法對年輕代和年老代進(jìn)行垃圾回收,即Minor GC和Major GC。Serial GC在client模式(客戶端模式)很有用,比如在簡單的獨立應(yīng)用和CPU配置較低的機(jī)器。這個模式對占有內(nèi)存較少的應(yīng)用很管用。

Parallel GC(-XX:+UseParallelGC):除了會產(chǎn)生N個線程來進(jìn)行年輕代的垃圾收集外,Parallel GC和Serial GC幾乎一樣。這里的N是系統(tǒng)CPU的核數(shù)。我們可以使用 -XX:ParallelGCThreads=n 這個JVM選項來控制線程數(shù)量。并行垃圾收集器也叫throughput收集器。因為它使用了多CPU加快垃圾回收性能。Parallel GC在進(jìn)行年老代垃圾收集時使用單線程。

Parallel Old GC(-XX:+UseParallelOldGC):和Parallel GC一樣。不同之處,Parallel Old GC在年輕代垃圾收集和年老代垃圾回收時都使用多線程收集。

并發(fā)標(biāo)記清除(CMS)收集器(-XX:+UseConcMarkSweepGC):CMS收集器也被稱為短暫停頓并發(fā)收集器。它是對年老代進(jìn)行垃 圾收集 的。CMS收集器通過多線程并發(fā)進(jìn)行垃圾回收,盡量減少垃圾收集造成的停頓。CMS收集器對年輕代進(jìn)行垃圾回收使用的算法和Parallel收集器一樣。 這個垃圾收集器適用于不能忍受長時間停頓要求快速響應(yīng)的應(yīng)用。可使用 -XX:ParallelCMSThreads=n JVM選項來限制CMS收集器的線程數(shù)量。

G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的長遠(yuǎn)目標(biāo)時代替CMS收集器。G1收集器是一個并行的、并發(fā)的和增量式壓縮短暫停頓的垃圾收集器。G1收集器和其他的收集器運 行方式不一樣,不區(qū)分年輕代和年老代空間。它把堆空間劃分為多個大小相等的區(qū)域。當(dāng)進(jìn)行垃圾收集時,它會優(yōu)先收集存活對象較少的區(qū)域,因此叫 “Garbage First”。

責(zé)任編輯:王雪燕 來源: Hi_峰兄
相關(guān)推薦

2018-07-06 09:10:18

Java程序員性能優(yōu)化

2010-09-25 13:31:00

TomcatJVM

2010-09-26 11:00:48

JVM參數(shù)配置

2019-12-04 09:47:55

TomcatJVM性能

2020-08-24 08:34:03

命令性能優(yōu)化

2010-09-26 16:31:07

JVM參數(shù)配置

2010-09-17 15:57:23

TomcatJVM

2022-06-17 09:58:23

JVM應(yīng)用程序

2010-07-02 14:21:02

Exchange 20

2018-11-01 10:34:37

JVM內(nèi)存配置

2021-01-19 13:10:29

ZshLinuxUbuntu

2020-06-29 14:10:28

JVM參數(shù)配置

2009-07-09 14:26:27

JVM參數(shù)

2010-09-27 09:53:45

TomcatJVM

2021-03-17 08:11:29

SpringBoot項目數(shù)據(jù)庫

2024-12-13 08:02:10

PythonGenerator懶加載

2017-06-27 08:41:04

JVM設(shè)計缺陷GC

2024-02-27 11:15:28

數(shù)字化轉(zhuǎn)型新銀行商業(yè)街銀行

2009-07-10 11:02:17

WebWork參數(shù)配置

2010-09-16 15:57:00

PPPoA配置
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩久久精品视频 | 日韩一区和二区 | 亚洲性在线 | 日韩在线视频观看 | 亚洲精品18 | 国产欧美一级二级三级在线视频 | 97起碰| 国产亚洲精品久久久久久豆腐 | 日韩免费电影 | 久久久久久久电影 | 国产精品久久久久久久免费观看 | 久久国产一区二区三区 | 国产一区二区三区四区 | 99久久亚洲 | 一级毛片在线播放 | 精品免费视频一区二区 | 亚州成人| www久久| 欧美精品二区 | 国产激情91久久精品导航 | 武道仙尊动漫在线观看 | 欧美群妇大交群中文字幕 | 国产精品久久久免费 | 视频一区在线观看 | 日韩www视频 | 日韩成人 | www国产亚洲精品久久网站 | 涩涩片影院 | 亚洲激情综合 | 好姑娘高清在线观看电影 | 日韩av免费在线观看 | 精品久| 日韩第1页 | 日韩欧美国产精品一区二区 | 中文字幕欧美日韩 | 99精品视频一区二区三区 | 亚洲成a人片 | 中文字幕在线三区 | 一区二区小视频 | 中文字幕一区二区三区日韩精品 | 国产视频久久 |