[發明專利]基于Java虛擬機的并發垃圾收集器的調度器無效
| 申請號: | 201010595927.6 | 申請日: | 2010-12-20 |
| 公開(公告)號: | CN102023896A | 公開(公告)日: | 2011-04-20 |
| 發明(設計)人: | 楊珉;張源;周尋;王迪;臧斌宇 | 申請(專利權)人: | 復旦大學 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48 |
| 代理公司: | 上海正旦專利代理有限公司 31200 | 代理人: | 陸飛;盛志范 |
| 地址: | 200433 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 java 虛擬機 并發 垃圾 收集 調度 | ||
1.一種基于Java虛擬機的并發垃圾收集器的調度器,其特征在于調度器記錄系統的信息包括堆的總體大小M0、當前堆內的內存消耗情況M1、當前應用程序的內存消耗的平均速率V1,以及當前垃圾收集器跟蹤處理的平均速率V2;且垃圾收集的跟蹤處理需要的時間t1和應用程序最后耗盡系統內存資源的時間t2相同,即得到以下三個等式:
t1?=?t2;?????????????????
t1?=?M1/V2;???????????
t2?=?(M0?–?M1)/V1;?
于是,調度器最終的最佳GC觸發時間點為:
M+?=0.9*M0*V2/(V1?+?V2)。
2.根據權利要求1所述的基于Java虛擬機的并發垃圾收集器的調度器,其特征在于所述調度器采用二分逼近法逼近GC觸發時間點,即第一次選取的時間t1’為:
t1’=?t0?+?M0/2V0?????????????⑦
而第二次選取的時間t2’為:
t2’=?t1’?+?M1/2V1?????????????⑧?
并按下式進行計算:
tn+1’=?tn’?+?Mn/2Vn????????????⑨
在以上各式中,M0表示t0時刻堆的大小,V0表示t0時刻內存消耗的平均速率,以此類推,Mn表示tn時刻堆的大小,Vn表示tn時刻內存消耗的平均速率;
在某一次垃圾結束時刻t0,調度器用式⑨計算出t1時刻,之后忽略t0到t1時間段中對堆內存的申請的檢驗;當到達t1時刻時,首先檢驗是否已經超過了需要進行垃圾收集的堆內存使用上限,若還沒有超過,繼續用式⑨迭代計算t2,t3??……?;若已經超過,就停止迭代過程,開始進行垃圾收集工作。
3.根據權利要求2所述的基于Java虛擬機的并發垃圾收集器的調度器,其特征在于所述調度器還包括對系統資源耗盡處理:按照系統資源耗盡發生的時刻段,把資源耗盡情況分成3種:
a)?發生在應用程序運行中,垃圾收集線程沒有啟動;
b)?發生在垃圾收集線程啟動后的跟蹤階段;
c)?發生在垃圾收集線程啟動后的收集清理階段;
調度器利用并發垃圾收集的特點,對這三種情況分別進行如下處理:
a)?對于第一種情況,只把所有的線程都停下來,做一次“停止世界”的垃圾收集過程,之后再讓程序繼續運行;
b)?當系統資源耗盡出現在垃圾收集線程啟動后的跟蹤階段,那么并發垃圾收集階段的跟蹤信息予以復用;調度器停掉其他應用程序的線程,讓垃圾收集線程把跟蹤階段完成,先得到對象跟蹤信息;之后用這個對象跟蹤信息做一次“停止世界”的垃圾收集過程來釋放內存;
c)?對于系統資源耗盡出現在垃圾收集線程啟動后的收集清理階段,調度器停掉其他應用程序的線程,讓垃圾收集線程把收集清理階段完成。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于復旦大學,未經復旦大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010595927.6/1.html,轉載請聲明來源鉆瓜專利網。





