- 1、Java 中isFull是哪個包?
- 2、java 怎樣規避full gc
- 3、java fullgc什麼意思
- 4、java培訓結束後總結如何寫?
- 5、Java中full gc什麼意思?
isFull是自定義方法,一般用來判斷stack是否為滿棧。。
可以放到任意包
據我觀察JAVA程序,一般在命令行模式下運行JAVA任務,JDK可以承受的內存上限大概是機器物理內存的1/4。
比如我的服務器是16G的內存,那麼JAVA程序可以佔用的最大內存是4G左右,超出就報溢出。
所以在一般程序運行中,JAVA內存逐漸從
100MB 200MB, 300…1G…2G…… 膨脹到4G,在這個過程中,我的循環都設置了System.gc(),偶爾有佔用內存減少的時候,但是基本下降都很有限,然後過一會兒又繼續上升。直到上升到4G的時候,如果此時系統沒有明確的數據持續寫進內存,只是大量進行新建變量,賦值,然後生命周期結束待回收的過程,系統會大量進行GC的操作,保證JAVA內存不超過4G,但我似乎感覺一旦在內存在4G上下遊動的時候,JAVA程序的性能就開始走低。
所以我的理解是,GC直到不得不執行的時候才會被執行,而且效果並不好。。。。
PS,如果是8G內存的服務器,GC頻繁執行是在JAVA佔用內存到達2G的時候。
同不知道如何進行高效的內存回收。本來沒有任何寫入內存操作的程序,但是程序處理問題一大了,佔有內存就很多。
GC是垃圾回收站。
FULL GC分析和問題定位
a. GC log收集和分析
(1)在JVM啟動參數增加:”-verbose:gc -Xloggc:file_name -XX:+PrintGCDetails -XX:+PrintGCDateStamps”
PrintGCTimeStamp只能獲得相對時間,建議使用PrintGCDateStamps獲得full gc 發生的絕對時間
(2)如果採用CMS GC,仔細分析jstat FGC輸出和GC 日誌會發現, CMS的每個並發GC周期則有兩個stop-the-world階段——initial mark與final re-mark,使得CMS的每個並發GC周期總共會更新full GC計數器兩次,initial mark與final re-mark各一次
b. Dump JVM 內存快照
/opt/taobao/java/bin/jmap -dump:format=b,file=dump.bin pid
這裡有一個問題是什麼時候進行dump?
一種方法是前面提到的用jstat工具觀察,當OLD區到達比較高的比例如60%,一般會很快觸發一次FULL GC,可以進行一次DUMP,在FULL GC發生以後再DUMP一次,這樣比較就可以發現到底是哪些對象導致不停的FULL GC
另外一種方法是通過配置JVM參數
-XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC分別用於指定在full GC之前與之後生成heap dump
c. 利用MAT((Memory Analyzer Tool)工具分析dump文件
關於MAT具體使用方法網上有很多介紹,這裡不做詳細展開,這裡需要注意的是:
(1) MAT缺省只分析reachable的對象,unreachable的對象(將被收集掉的對象)被忽略,而分析FULL GC頻繁原因時unreachable object也應該同時被重點關注。如果要顯示unreachable的對象細節必須用mat 1.1以上版本並且打開選項「keep unreachable object」
(2) 通常dump文件會好幾個G,無法在windows上直接進行分析,我們可以先把dump文件在linux上進行分析,再把分析好的文件拷貝到windows上,在windows上用MAT打開分析文件。
java語言是-種跨平台的高級語言,無論是網絡世界和桌面應用程序,還是分佈式應用環境和嵌入式應用都可以看到java的身影。顯然java語言依然保持着旺盛的生命力,這也使得眾多的從業人員開始學習java語言。不過大家在Java培訓班學習之後,學校肯定會讓寫java學習總結的,這樣很多程序猿頭疼,因為學習程序之後,大家的作文水平明顯會下降,今天我就把總結的技巧告訴大家。1、在那個機構學習的,學習的過程怎樣:比如:某某在昆明北大青鳥學習JAVA軟件開發也有一段時間了,現在java的學習就要結束了,我對java從初步的認識的認識到能夠熟練掌握各個方面的問題。比如說一下面向對象:面向對象是個很嚴肅的問題,就向上下級關係一樣,下級在有的方面就得遵守.上級的指令做事,這樣就便於管理,更是提高了生產的效率。在這裡學習一段時間使我受益匪淺,從剛畢業的迷茫之際,到現在敢於去各大公司面試,上崗,對自己信心滿滿。2、從自身出發:比如:自從學習了這麼課程之後,最讓我感覺深刻的是時間不夠用,每天過得很充實。忙到沒時間拍拖,忙到沒時間休閑娛樂,忙到廢寢忘食還在寫着代碼,就連吃飯睡覺同學們都在談論着如何寫代碼才能實現某種功能。某位老師java編程的課程讓我受益匪淺,某某老師幽默風趣,由淺入深,循序漸進教學方式讓我們更快掌握代碼,而且他還讓我們參與軟件開發項目,理論結合實踐,讓我們在工作中發現問題,在實踐中成長。這種浸入式的java培訓教學我覺得很好,實踐出真知,只有在實踐中才能真正學到東西,發現問題,才能更好提升自己。3、認識到的朋友:比如:在這段時間的學習生活中,我也認識了很多同學,我們來自不同的學校,我們因為共同的理想而走在一起,其間我們有過迷茫和彷徨,有過艱辛還有歡笑,但不管怎樣,我們微笑着面對,因為我們是一個有理想的碼農。雖然我們在我們前行的道路上,或許有些許坎坷,但其實人生的快樂正是在起起落落間,只要堅信我們前進的方向正確,我深信,終有一天總會觸摸到天堂。4、最後感謝學校、老師、朋友感謝的話就不為大家舉例了,相信大家都會有對待學校老師朋友都有着重大的感情,以上觀點知識小編為大家總結的幾點技巧,只是本人的觀點,如果能夠幫助到大家,本人也是很高興的,今天java培訓結束後總結如何寫?就寫到這裡,希望能夠幫助到即將畢業的同學們。
轉發的~但能解決你的問題
除直接調用System.gc外,觸發Full GC執行的情況有如下四種。
1. 舊生代空間不足
舊生代空間只有在新生代對象轉入及創建為大對象、大數組時才會出現不足的現象,當執行Full GC後空間仍然不足,則拋出如下錯誤:
java.lang.OutOfMemoryError: Java heap space
為避免以上兩種狀況引起的FullGC,調優時應盡量做到讓對象在Minor GC階段被回收、讓對象在新生代多存活一段時間及不要創建過大的對象及數組。
2. Permanet Generation空間滿
PermanetGeneration中存放的為一些class的信息等,當系統中要加載的類、反射的類和調用的方法較多時,Permanet Generation可能會被佔滿,在未配置為採用CMS GC的情況下會執行Full GC。如果經過Full GC仍然回收不了,那麼JVM會拋出如下錯誤信息:
java.lang.OutOfMemoryError: PermGen space
為避免Perm Gen佔滿造成Full GC現象,可採用的方法為增大Perm Gen空間或轉為使用CMS GC。
3. CMS GC時出現promotion failed和concurrent mode failure
對於採用CMS進行舊生代GC的程序而言,尤其要注意GC日誌中是否有promotion failed和concurrent mode failure兩種狀況,當這兩種狀況出現時可能會觸發Full GC。
promotionfailed是在進行Minor GC時,survivor space放不下、對象只能放入舊生代,而此時舊生代也放不下造成的;concurrent mode failure是在執行CMS GC的過程中同時有對象要放入舊生代,而此時舊生代空間不足造成的。
應對措施為:增大survivorspace、舊生代空間或調低觸發並發GC的比率,但在JDK 5.0+、6.0+的版本中有可能會由於JDK的bug29導致CMS在remark完畢後很久才觸發sweeping動作。對於這種狀況,可通過設置-XX:CMSMaxAbortablePrecleanTime=5(單位為ms)來避免。
4. 統計得到的Minor GC晉陞到舊生代的平均大小大於舊生代的剩餘空間
這是一個較為複雜的觸發情況,Hotspot為了避免由於新生代對象晉陞到舊生代導致舊生代空間不足的現象,在進行Minor GC時,做了一個判斷,如果之前統計所得到的Minor GC晉陞到舊生代的平均大小大於舊生代的剩餘空間,那麼就直接觸發Full GC。
例如程序第一次觸發MinorGC後,有6MB的對象晉陞到舊生代,那麼當下一次Minor GC發生時,首先檢查舊生代的剩餘空間是否大於6MB,如果小於6MB,則執行Full GC。
當新生代採用PSGC時,方式稍有不同,PS GC是在Minor GC後也會檢查,例如上面的例子中第一次Minor GC後,PS GC會檢查此時舊生代的剩餘空間是否大於6MB,如小於,則觸發對舊生代的回收。
除了以上4種狀況外,對於使用RMI來進行RPC或管理的Sun JDK應用而言,默認情況下會一小時執行一次Full GC。可通過在啟動時通過- java-Dsun.rmi.dgc.client.gcInterval=3600000來設置Full GC執行的間隔時間或通過-XX:+ DisableExplicitGC來禁止RMI調用System.gc。
原創文章,作者:LY5OE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126437.html