日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java和net共同点,Java和.NET中的垃圾回收机制比较

發布時間:2024/1/23 asp.net 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java和net共同点,Java和.NET中的垃圾回收机制比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相同點:

都采用了分代的機制。

都支持并發GC。

都沒有采用引用計數方式,而是采用了追蹤技術。

.NET中,可以通過代碼GC.Collect() 強制要求CLR進行垃圾回收(由于垃圾回收是異步的,CLR有一個專用的線程負責垃圾回收,因此,即使調用GC.Collect,也并不是實時的調用了Finalize,因此要保證確實調用了析構方法,可以使用語句GC.WaitForPendingFinalizers()來確保析構方法真的被運行了,參考http://cnn237111.blog.51cto.com/2359144/1343004)

Java中也可以通過System.gc() 強制要求進行垃圾回收。(事實上也僅僅是建議JVM執行垃圾回收,JVM并不一定立即做回收行為。)

不同點:

CLR預留了一塊大空間,稱作large object heap (LOH),目的是當有大對象(超過85000字節的)需要分配空間時,就可以放在這里。

這塊地方和分代機制的不同之處在于,這個地方只有當發生full GC的時候,才會回收,而且這塊地方不會被壓縮。

Java中可以通過配置參數,使得大對象(大于設定的閾值)直接進入老年代(避免在年輕代上做大量的復制操作)。

.NET回收的內存,直接給返還給操作系統。

JVM在的垃圾回收機制,提供了大量的可配置參數。

而CLR的垃圾回收機制幾乎沒什么可以配置的(僅有的配置似乎就是工作站模式(Workstation)和服務器模式(Server))。

都支持并發GC。JAVA是在老年代上支持并發GC,采用的CMS收集器。

.NET的并發GC只在第2代上,并且在工作站模式下才會有。

Java分成年輕代,老年代,永久代。

.NET分第0代,第1代,第2代。

.NET中采用了標記,壓縮的方式。

JAVA由于收集器很多,因此不限于一種算法。年輕代老年代方式

Serial收集器復制算法單線程,stop the world

SerialOld收集器標記整理算法單線程,stop the world

ParNew收集器復制算法標記整理算法多線程,stop the world

Parallel Scavenge收集器復制算法多線程,stop the world

CMS收集器標記清除單線程

G1收集器復制標記整理

Java垃圾回收的幾篇文章

.NET垃圾回收的幾篇文章

總結

以上是生活随笔為你收集整理的java和net共同点,Java和.NET中的垃圾回收机制比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。