国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java虛擬機內存溢出及泄漏實例

java虛擬機內存溢出及泄漏實例

2021-05-10 11:03dream_sky Java教程

本篇文章給大家分享了java虛擬機內存溢出及泄漏的實例以及相關知識點分享,有興趣的朋友參考學習下。

測試參數設置:

1、循環調用new a()實現堆溢出,java.lang.outofmemoryerror: java heap space,

虛擬機參數:-xms1m -xmx1m -xx:+heapdumponoutofmemoryerror,解釋:將-xmx和-xms設置為一樣可以避免堆自動擴展,-xx:+heapdumponoutofmemoryerror可以讓虛擬機在出現內存溢出異常時dump出當前的堆內存轉儲快照

?
1
2
3
//    while (true){
//      new a().do2();
//    }

2、循環調用對象引用的方式實現棧溢出。java.lang.stackoverflowerror,

虛擬機參數:-xss128k,

解釋:設置虛擬機棧的大小為128kn

在單線程下,無論棧幀太大還是虛擬機棧容量太小,內存無法分配的時候都會拋出以上錯誤

?
1
2
3
void do2(){
  do2();
};

3、循環調用string.intern()方法來寫入常量池,常量池溢出。java.lang.outofmemoryerror: permgen space

?
1
2
3
4
while (true)
   {
     list.add(string.valueof(i++).intern());
   }

虛擬機參數:-xx:permsize=10m -xx:maxpermsize=10m,

解釋:表示jvm初始分配的永久代的容量和最大容量。(永久區內存不足,1.8后都在堆上。方法區=永久代,permgen space”,即永久代)

四種引用狀態:(類繼承extends weakreference<car>)

1、強引用:object obj = new object(),只要強引用還存在,垃圾收集器永遠不會回收掉被引用的對象;

2、軟引用:softreference,被軟引用關聯的對象會在內存不夠時被回收。如果這次回收還沒有足夠的內存,才會拋出內存溢出異常;softreference<byte[]> sr = new softreference<byte[]>(bytes);

3、弱引用:weakreference,被弱引用關聯的對象只能生存到下一次垃圾回收之前;

4、虛引用:phantomreference,虛引用是用于跟蹤對象的回收狀態。

觸發gc的時機:

1、當年輕代或者老年代滿了,java虛擬機無法再為新的對象分配內存空間了,那么java虛擬機就會觸發一次gc去回收掉那些已經不會再被使用到的對象

2、system.gc(),runtime.getruntime().gc()方法,通常這樣會觸發一次的full gc以及至少一次的minor gc,不一定就立即回收。

3、在當前服務器空閑或堆中老年代等占用率較大時觸發。

回收無引用對象占據的空間,而不是對象本身。

但真正垃圾回收機制具體在什么時間點開始發生動作這同樣是不可預料的(未開源),這和搶占式的線程在發生作用時的原理一樣。

分代收集算法:

新生代收集器和老年代收集器。

標記-清除算法

標記-整理算法

內存溢出和內存泄露的區別:

1、內存溢出:程序在分配內存的時候沒有足夠大的空間了。

2、內存泄漏:程序在申請內存之后,沒有辦法釋放掉內存,它始終占用著內存,即被分配的對象可達但無用。內存泄露一般都是因為內存中有一塊很大的對象,但是無法釋放。 會導致內存溢出。

并行與并發:

1、并行:指多條垃圾收集器線程運行;

2、并發:指用戶線程和垃圾收集器線程同時工作。

類加載機制:

1、加載(生成java.lang.class對象)、驗證、準備、解析、初始化(賦值過程)、使用(using)和卸載(unloading)這7個階段

2、其中驗證(字節流包含的信息是否正確,是否符合jvm)、

準備(為類變量即靜態變量賦值,賦0)、

解析(將符號引用替換為直接引用,class文件轉內存)3個部分統稱為連接(linking)

3、加載階段:獲取.class文件的二進制流;

將類信息、靜態變量、字節碼、常量這些.class文件中的內容放入方法區

在內存中生成一個代表這個.class文件的java.lang.class對象,作為方法區這個類的各種數據的訪問入口。

4、初始化階段做的事就是調用client>方法給static變量賦予用戶指定的值以及執行靜態代碼塊。

雙親委派模型:(啟動類加載器>擴展類加載器>應用程序類加載器>自定義類加載器)

一個類加載器收到了類加載的請求,把這個請求委派給父類加載器去完成,父類完不成,自己才去完成。

先行發生原則:

java內存中的有序性僅僅依靠synchronized和volatile來約束是不行,依靠程序調用次序規則判斷setter和getter順序。

minor gc : 清理年輕帶內存, 無法為一個新的對象分配空間。

major gc : 是清理老年代,許多 major gc 是由 minor gc 觸發的

full gc : 是清理整個堆空間—包括年輕代和老年代

原文鏈接:https://www.cnblogs.com/shuchen007/p/9205612.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 在线中文视频 | 91色在线观看 | 黄色毛片在线 | 依人在线观看 | 亚洲视频自拍 | 久久久国产精品入口麻豆 | 中文字幕欧美在线 | 国产97在线 | 免费 | 青草青草久热精品视频在线观看 | 亚洲精品电影在线观看 | 欧美日韩在线免费观看 | 国产精品免费视频一区 | 婷婷色视频 | 久久久免费 | 青青草免费在线 | 久久精品视频网站 | 中文字幕在线观看av | 午夜精品在线 | 在线电影一区 | 激情久久久久 | 亚洲综合区| 精品久久国产老人久久综合 | 久久久久综合精品福利啪啪 | 国产精品欧美一区二区三区不卡 | 女人爽到高潮aaaa电影 | 91久久精品一区 | 欧美日韩国产精品一区二区 | 日韩精品1区2区3区 国产日韩在线视频 | 国产成人综合一区 | 99视频在线 | 久久久久久久国产精品 | 成人午夜精品视频 | 午夜视频在线观看视频 | 日本一区二区三区四区 | 国产精品国产精品国产专区不卡 | www.中文字幕 | 成人深夜免费视频 | 成人羞羞视频在线观看免费 | 亚洲精品中文字幕在线观看 | 91精品国产综合久久福利软件 | 亚洲精品999 |