專利名稱:計算機應(yīng)用程序中優(yōu)化存儲器使用的方法
技術(shù)領(lǐng)域:
本發(fā)明的各種實施方案涉及到計算機編程領(lǐng)域。
背景技術(shù):
許多現(xiàn)代的編程語言提供了為應(yīng)用程序?qū)崟r創(chuàng)建的對象或其它數(shù)據(jù)結(jié)構(gòu)指令實施動態(tài)存儲器分配的可能性。一些語言,如C和C++明確要求用戶執(zhí)行諸如存儲器分配的回收,而其它語言,如Java和C#提供對存儲器管理的支持,允許為動態(tài)存儲器分配提供動態(tài)回收。例如Java程序語言在Java虛擬機(JVM)堆棧中分配對象。當(dāng)對象不再需要時,它不明確地在堆棧中被釋放或遷移。為了遷移不使用的對象,Java提供了內(nèi)嵌的回收不被引用的動態(tài)分配對象功能,稱為“無用(存儲)單元”。動態(tài)存儲器管理能力通常被稱作“無用單元回收”。
當(dāng)存儲器不再被需要時,無用單元回收提供了釋放和回收存儲器的功能,提供了一個能夠創(chuàng)建更有效應(yīng)用程序的范例。然而,無用單元回收本身在許多Java應(yīng)用程序中增加了操作開銷。特別是,使用重要的系統(tǒng)存儲器資源的Java企業(yè)應(yīng)用程序能夠影響到它們運行增加作為工作負(fù)荷的無用單元回收活動。這就導(dǎo)致Java企業(yè)應(yīng)用程序的運行緩慢和某些情況下不可靠的操作。
除一些無用單元回收開銷是因為軟件的瑕疵之外,存儲器堆棧的使用沒有優(yōu)化和不正確的無用單元的回收策略是導(dǎo)致無用單元回收開銷的主要原因。為優(yōu)化存儲器使用而調(diào)整堆棧和調(diào)整無用單元回收策略的程序即“無用單元回收的調(diào)整”。
無用單元回收的調(diào)整在一定的企業(yè)應(yīng)用程序中通過優(yōu)化存儲器的使用和減少整個無用單元回收活動所花費的時間產(chǎn)生大量(如100%,或相當(dāng)高)的操作。這使得在Java或類似的程序語言中可以獲得預(yù)計和優(yōu)化的應(yīng)用性能。
目前的無用單元回收工具作為成形的或監(jiān)控解決方案被Java所整合。這些工具一般使用Java公用界面測量堆棧的容量,或依靠JVM所具有的無用單元回收跟蹤功能。當(dāng)這些工具提供給使用者優(yōu)化無用單元回收的指導(dǎo)時,它們同時也具有很多缺陷。更重要的是,這些工具不能提供任何真正的無用單元回收優(yōu)化參數(shù),提供解除下述昂貴操作的方法。
圖1是說明根據(jù)現(xiàn)有技術(shù)無用單元回收調(diào)整過程100的流程圖。在步驟105中,被用來調(diào)整無用單元回收的存儲器分配跟蹤特定為解釋器。在步驟110中,應(yīng)用程序執(zhí)行寫入應(yīng)用程序中的程序語言。在步驟115中,跟蹤數(shù)據(jù)被分析。在步驟120中,它判斷所期望的結(jié)果是否已經(jīng)達(dá)到。如果是,過程100結(jié)束。否則,如果所期望的結(jié)果沒有達(dá)到,如步驟125所示,堆棧參數(shù)根據(jù)分析和過程100被調(diào)整,返回步驟105。
一般來說,無用單元回收是作為用戶鍵入或默認(rèn)的參數(shù)。為了判斷哪些參數(shù)要被插入,用戶必須運行應(yīng)用程序,并分析Java堆棧性能結(jié)果。例如,用戶必須完成應(yīng)用程序的運行而回收性能數(shù)據(jù),并分析結(jié)果。當(dāng)全部無用單元回收時間很短暫時,無用單元回收將成為大的應(yīng)用程序而占用所有執(zhí)行時間中相當(dāng)長的一段,如企業(yè)應(yīng)用程序。例如,在大的應(yīng)用程序中,無用單元回收占用了所有的執(zhí)行時間。當(dāng)完成應(yīng)用程序的運行后,分析堆棧性能數(shù)據(jù),新的參數(shù)將由用戶根據(jù)分析而確定。這樣的過程將被重復(fù),直至獲得所期望的參數(shù)。
此外,為了優(yōu)化無用單元回收,用戶必須在應(yīng)用程序或平臺發(fā)生變化時,隨時決定參數(shù)。運行應(yīng)用程序、回收堆棧性能數(shù)據(jù)、分析結(jié)果所花費的時間可能相當(dāng)大,這就導(dǎo)致了這些應(yīng)用程序的運行有著不扉的開銷。
當(dāng)應(yīng)用程序分析被診斷為不合規(guī)則時,額外的問題隨之而生。安裝,特別是在第三方的計算機系統(tǒng)上安裝一個應(yīng)用程序,一般的講是麻煩的。而且,出于策略考慮,應(yīng)用程序的擁有者或許不希望在第三方的計算機系統(tǒng)上安裝其應(yīng)用程序。于是,第三方必須告訴用戶,哪些參數(shù)要鍵入,然后等待應(yīng)用程序的運行,回收堆棧性能數(shù)據(jù)。這樣就花費了應(yīng)用程序用戶的計算資源,或許超過了直接運用應(yīng)用程序開銷,增加了額外的開銷(如,網(wǎng)絡(luò)停機時間)和其它應(yīng)用程序的性能下降。
發(fā)明內(nèi)容
公開了一種優(yōu)化計算機應(yīng)用程序存儲器使用的方法。接收包含計時信息的存儲器使用數(shù)據(jù)。產(chǎn)生存儲器使用數(shù)據(jù)的圖形表示。接收至少一個堆棧參數(shù)。并執(zhí)行基于存儲器使用數(shù)據(jù)和堆棧參數(shù)的存儲器使用數(shù)據(jù)仿真。
合并成為說明一部分的附圖,將和說明一起用于說明本發(fā)明的實施方案,解釋本發(fā)明的原理。
圖1是說明現(xiàn)有無用數(shù)據(jù)回收整理技術(shù)的流程圖。
圖2A和圖2B是說明根據(jù)本發(fā)明實施方案,無用數(shù)據(jù)回收整理選擇參數(shù)的過程。
圖3是根據(jù)本發(fā)明實施方案,由無用數(shù)據(jù)回收仿真圖形用戶界面產(chǎn)生的無用數(shù)據(jù)回收持續(xù)期視圖的屏幕截圖范例。
圖4是根據(jù)本發(fā)明實施方案,由無用數(shù)據(jù)回收仿真圖形用戶界面產(chǎn)生的無用數(shù)據(jù)回收總結(jié)視圖的屏幕截圖范例。
圖5是根據(jù)本發(fā)明實施方案,由無用數(shù)據(jù)回收仿真圖形用戶界面產(chǎn)生的無用數(shù)據(jù)回收堆棧參數(shù)輸入視圖的屏幕截圖范例。
圖6是根據(jù)本發(fā)明實施方案,說明仿真運行無用數(shù)據(jù)回收的流程圖。
圖7是根據(jù)本發(fā)明實施方案,說明數(shù)據(jù)在Java虛擬機和無用數(shù)據(jù)回收仿真間流動的數(shù)據(jù)流程圖。
具體實施例方式
本發(fā)明的首選實施方案的參考將與
的示例予以詳細(xì)的制定。本發(fā)明將和首選實施方案一道進行說明??梢岳斫猓黄谕麅H僅局限于本發(fā)明的這些實施方案中。相反,本發(fā)明意圖含蓋包括在附屬權(quán)利聲名所定義的本發(fā)明的思路和范圍的所有變化、調(diào)整和等效。而且,在本發(fā)明下面的詳細(xì)描述中,多數(shù)細(xì)節(jié)的提出是為了提供對本發(fā)明的一個詳盡的理解。不管怎樣,很明顯,本發(fā)明技術(shù)領(lǐng)域的技術(shù)人員將無須這些細(xì)節(jié)而進行執(zhí)行。在其它的實例中,為了避免不必要的模糊本發(fā)明的特征,眾所周知的過程、構(gòu)成、結(jié)構(gòu)和裝置將不再詳細(xì)予以描述。
圖2A和圖2B是根據(jù)本發(fā)明實施方案的仿真程序用于存儲器使用過程200的流程圖。在實施方案中,過程200在計算機可讀和計算機可執(zhí)行的指令控制之下由處理器執(zhí)行。計算機可讀和計算機可執(zhí)行指令留駐在諸如數(shù)據(jù)存儲特征、計算機非永久性存儲器和/或計算機永久性存儲器中。不管怎樣,計算機可讀和計算機可執(zhí)行指令將留駐在計算機任何形式的可讀介質(zhì)中。盡管,特定的步驟在200過程中予以說明,這些步驟只是范例。就是說,本發(fā)明的實施方案非常適于執(zhí)行圖2A和圖2B所描述的各種其它的步驟或變化。
在圖2A的步驟205中,存儲器分配性能跟蹤被用作設(shè)定指定給解釋器的無用數(shù)據(jù)回收。在一種實施方案中,解釋器是Java虛擬機(JVM)。存儲器分配性能跟蹤是用作捕捉供執(zhí)行離線仿真和執(zhí)行應(yīng)用最小指導(dǎo)的必須且充分信息的機構(gòu)。在一種實施方案中,存儲器分配性能跟蹤在HP-UX上為-Xverbosegc操作。在一種實施方案中,無用回收性能跟蹤數(shù)據(jù)包括關(guān)于無用數(shù)據(jù)回收的信息,在這里同樣是存儲器使用數(shù)據(jù)。為了澄清說明,存儲器使用數(shù)據(jù)這里還包括無用數(shù)據(jù)回收數(shù)據(jù)、存儲器性能跟蹤和詳細(xì)的無用數(shù)據(jù)回收跟蹤數(shù)據(jù)。通常,存儲器使用數(shù)據(jù)在表格形式文件中包括關(guān)于事件的詳細(xì)信息和在無用數(shù)據(jù)回收中發(fā)生的操作。在實施方案中,存儲器使用數(shù)據(jù)包括,但不局限于為什么執(zhí)行無用單元回收;無用單元回收要占用多少時間;無用單元回收發(fā)生的時間;這個特定的無用單元回收的回收活動要占用多少存儲器(如,這個特定的無用單元回收的效果);堆棧容量的詳細(xì)信息;在無用單元回收前,各個片斷所占的部分;在無用單元回收后,各個片斷所占的部分;與被認(rèn)為是“老”的對象大概的年齡。
在一種實施方案中,其應(yīng)用程序是基于Java的,存儲器使用數(shù)據(jù)由在JVM無用單元回收器上選定的-Xverbosegc操作產(chǎn)生。
在步驟210中,用于程序編寫的程序語言執(zhí)行一個應(yīng)用程序。在一種實施方案中,應(yīng)用是企業(yè)應(yīng)用。在一種實施方案中,應(yīng)用是基于用Java程序語言編寫的Java應(yīng)用。為了本申請的目的,解釋器指基于Java編程語言的JVM,然而,值得重視的是,本發(fā)明的目的在于使用回收未引用的動態(tài)分配對象(如無用單元回收)來釋放未使用存儲器的任何編程語言。
在步驟215中,無用單元回收數(shù)據(jù)(如存儲器分配性能跟蹤數(shù)據(jù)、存儲器使用數(shù)據(jù)、未引用的對象回收數(shù)據(jù))被無用回收單元仿真所接收。在一種實施方案中,無用單元回收仿真留駐在JVM中,存儲器使用數(shù)據(jù)可以直接訪問。在另一種實施方案中,存儲器使用數(shù)據(jù)通過email附件的形式發(fā)送到無用單元回收仿真。另一種實施方案中,存儲器使用數(shù)據(jù)通過軟盤復(fù)制文件進行發(fā)送。值得重視的是,存儲器使用數(shù)據(jù)通常是小的文件,非常便于在計算機系統(tǒng)到計算機系統(tǒng)間傳送。
在步驟220中,無用單元回收仿真被訪問。無用單元回收仿真包括一個圖形用戶界面,提供了用于分析和調(diào)整堆棧參數(shù)、觀察無用單元回收仿真結(jié)果的用戶友好界面。在一種實施方案中,無用單元回收仿真留駐在如JVM同樣的計算機系統(tǒng)中。在另一個實施方案中,無用單元回收仿真通過網(wǎng)絡(luò)連接進行訪問。
在步驟225中,存儲器使用數(shù)據(jù)的圖形顯示被生成。如上所述,存儲器使用數(shù)據(jù)為表格形式,包括繪制所產(chǎn)生的多個數(shù)據(jù)。在一種實施方案中,繪制產(chǎn)生的多個數(shù)據(jù)用于說明無用單元回收的不同方面。
特別的,在存儲器使用數(shù)據(jù)捕獲的計時信息用于繪制對應(yīng)于應(yīng)用程序所有執(zhí)行時間的各種信息。圖3是根據(jù)本發(fā)明的一種實施方案,在數(shù)據(jù)繪制305期間由無用單元回收仿真的圖形用戶界面所產(chǎn)生的無用單元回收范例的屏幕截圖300。
數(shù)據(jù)繪制305包括所有應(yīng)用程序以秒為單位運行時間的一個X軸310,以秒為單位的特定的無用單元回收程序運行時間的Y軸315。而且,數(shù)據(jù)繪制305說明的是運行時間的四種無用單元回收程序提取、系統(tǒng)無用單元回收,老的全部和最老的全部。特別的,數(shù)據(jù)繪制305說明當(dāng)無用單元回收發(fā)生時,什么類型的回收發(fā)生和它要運行多長的時間。所有計時的信息,如平均無用單元回收的提取持續(xù)時間、在計時信息320中所示的平均滿無用單元回收持續(xù)時間。
參照圖2A步驟225,大范圍的數(shù)據(jù)繪制或圖形表示可以由存儲器使用數(shù)據(jù)產(chǎn)生。在一種實施方案中,額外的數(shù)據(jù)繪制包括,但并不局限于與時間對應(yīng)的堆棧使用;與時間對應(yīng)的自由累積字節(jié);和形成率。本發(fā)明的實施方案直接允許用戶定義數(shù)據(jù)的圖形表示。用戶期望的特定無用單元回收信息可以基于要求的輸入產(chǎn)生數(shù)據(jù)繪制。
在一種實施方案中,存儲器使用數(shù)據(jù)使用文本格式來表示說明在應(yīng)用程序運行期間,無用單元回收活動的總結(jié)。圖4是根據(jù)本發(fā)明的一種實施方案,由無用單元回收仿真圖形用戶界面產(chǎn)生的總結(jié)視圖405的示例屏幕截圖400??偨Y(jié)視圖405說明的是關(guān)于JVM堆棧容量、無用單元回收活動和所有統(tǒng)計的詳細(xì)信息。計時信息410包括花費在無用單元回收上時間的詳細(xì)信息。餅形圖415是所有運行在無用回收上時間方面的另一個圖形表示。
參照圖2A的步驟225,一些無用單元回收信息的圖形表示呈獻給用戶。使用這些圖形表示,用戶可以分析一個應(yīng)用程序的無用單元回收活動?;谟脠D形表示所呈獻的信息,用戶可以為了優(yōu)化應(yīng)用程序的操作性能而設(shè)想改變各種輸入?yún)?shù)。
在圖2B的步驟230中,至少一個堆棧參數(shù)(如一個參數(shù),一個存儲器標(biāo)準(zhǔn)或堆棧輸入)被無用單元回收仿真接收。在一種實施方案中,用戶進入堆棧參數(shù)由無用單元回收仿真接收。更佳的,堆棧參數(shù)可以由計算機產(chǎn)生,本發(fā)明并不意圖限制由用戶產(chǎn)生堆棧參數(shù)的輸入。
圖5是根據(jù)本發(fā)明的一種實施方案,由無用單元回收仿真圖形用戶界面產(chǎn)生的堆棧參數(shù)輸入視圖505屏幕截圖500的一個示例。堆棧參數(shù)輸入視圖允許用戶通過改變各種堆棧參數(shù)而調(diào)整應(yīng)用程序的無用單元回收。在一種實施方案中,有4個參數(shù)全部堆棧大小510、新產(chǎn)生的大小515,存活率520和系統(tǒng)無用單元回收呼叫指示器525。
在一種實施方案中,堆棧輸入?yún)?shù)視圖505表示當(dāng)應(yīng)用程序運行時存在的堆棧參數(shù)。然后用戶參照原值來改變堆棧參數(shù)的值。例如,JVM所有堆棧的大小510為64M,堆棧參數(shù)輸入視圖相應(yīng)的所有堆棧大小510說明值64M。用戶知道原值,然后就可以改變所有堆棧大小510的值。
在一種實施方案中,所有堆棧大小510的堆棧參數(shù)值、新產(chǎn)生大小515和存活率520可以直接由文本框(如文本框512a-c)輸入文本來改變。在一種實施方案中,所有堆棧大小510的堆棧參數(shù)值、新產(chǎn)生大小515和存活率520可以通過移動滾動條(如滾動條514a-c)來改變。在一種實施方案中,文本框512中的值隨著滾動條514的移動而更新。在另一種實施方案中,滾動條514隨著在文本框512中輸入新的值而更新。
在一種實施方案中,指示器525是一個包括在應(yīng)用程序運行中、指示是否開始要求存在存儲器管理的檢查框。如果應(yīng)用程序開始上述要求,根據(jù)跟蹤數(shù)據(jù),檢查框開始檢查。用戶可以依據(jù)應(yīng)用程序的特性選擇檢查框或不選擇。
在一種實施方案中,堆棧參數(shù)輸入視圖505包括JVM選擇器530。在一種實施方案中,JVM選擇器是一個包括多個JVM版本的下拉菜單。JVM選擇器具有產(chǎn)生其它JVM版本/操作選項的功能,在開始說明哪些JVM版本/類型在應(yīng)用程序運行中使用。用戶可以通過選擇不同的JVM版本改變必須重運行它們應(yīng)用程序的JVM版本/類型選項。一旦用戶鍵入所期望的參數(shù),仿真通過激活仿真激勵器540執(zhí)行。
在一種實施方案中,堆棧參數(shù)輸入視圖505包括JVM選項535。JVM選項535是包括所選擇所有堆棧大小510的堆棧參數(shù)值、新產(chǎn)生大小515和存活率520和系統(tǒng)無用單元回收呼叫指示器525的文本字符串。一旦所期望的堆棧參數(shù)被獲得,JVM操作535可以直接在JVM中進行復(fù)制。
在圖2B的步驟235中,工作負(fù)荷屬性被調(diào)整。更佳的是步驟235是可選的,工作負(fù)荷屬性將保持一致。在步驟240中,無用單元回收仿真配置被調(diào)整。更佳的是步驟240是可選的,無用單元回收仿真配置將保持一致。
在圖2B的步驟245中,無用單元回收仿真(如存儲器使用仿真)被執(zhí)行。在一種實施方案中,選擇一個仿真激勵器(如圖3中的仿真激勵器340)激活無用單元回收仿真。無用單元回收仿真建立在存儲器使用數(shù)據(jù)和輸入?yún)?shù)的基礎(chǔ)之上。
圖6是說明根據(jù)本發(fā)明實施方案,仿真無用單元回收過程600的流程圖。在步驟605中,詳細(xì)的無用單元回收跟蹤數(shù)據(jù)被接收。在一種實施方案中,無用單元回收跟蹤數(shù)據(jù)通過在HP-UX的-Xverbosegc操作來獲得。在一種實施方案中,無用單元回收跟蹤數(shù)據(jù)包括關(guān)于無用單元回收信息和與此相關(guān)的無用單元回收數(shù)據(jù)。
在步驟610中,它基于無用單元回收跟蹤數(shù)據(jù)的格式來確定什么樣的仿真模型。在步驟615中,基于輸入的無用單元回收跟蹤數(shù)據(jù),確定源堆棧配置和策略。在步驟620中,至少對堆棧參數(shù)的一個調(diào)整被接收。更佳的是,調(diào)整將用于調(diào)整堆棧配置。工作負(fù)荷特性或仿真參數(shù)。
在步驟625中,仿真特性由表示在跟蹤數(shù)據(jù)中的每個測量間隔來確定。在一種實施方案中,仿真特性參數(shù)包括確定所有分配的存儲器;確定所有回收的存儲器;估算存儲器分配率;和根據(jù)存儲器變?yōu)榉且玫母耪摗?br>
在步驟630中,新的應(yīng)用運行根據(jù)由步驟625確定的仿真特性進行仿真。在一種實施方案中,無用單元回收仿真數(shù)據(jù)估算調(diào)整的堆棧配置包括,但并不局限于無用單元回收的間隔;每單個回收的持續(xù)時間;每次無用單元回收的起因;兩次回收間的所有存儲器分配;兩次回收間的所有存儲器回收;每單次無用單元回收的持續(xù)時間;與通過壽命來估算存儲器使用的分布。
在如2B步驟250中,無用單元回收仿真數(shù)據(jù)的分析和圖形表示被繪制。在一種實施方案中,無用單元回收仿真數(shù)據(jù)表示在表格形式中,因此適于生成多數(shù)據(jù)繪制。在一種實施方案中,多數(shù)據(jù)繪制被生成用作說明無用單元回收仿真的不同方面。特別的,無用單元回收仿真數(shù)據(jù)包括計時信息,允許對應(yīng)應(yīng)用程序執(zhí)行的所有時間軸上繪制各種信息。
更佳的是,產(chǎn)生用作無用單元回收仿真數(shù)據(jù)的圖形表示與在圖2A的步驟225產(chǎn)生的無用單元回收數(shù)據(jù)相似。例如,圖3的屏幕截圖300示例同樣是根據(jù)無用單元仿真數(shù)據(jù)的無用單元回收期間數(shù)據(jù)圖305的說明。同樣,圖4的屏幕截圖400示例同樣是根據(jù)無用單元仿真數(shù)據(jù)的總結(jié)視圖405的說明。
對無用單元數(shù)據(jù)回收,廣泛的數(shù)據(jù)繪制或圖形表示可以通過無用單元數(shù)據(jù)仿真數(shù)據(jù)來產(chǎn)生。在一種實施方案中,額外的數(shù)據(jù)包括,但不局限于與時間對應(yīng)的堆棧使用;與時間對應(yīng)的自由累積字節(jié);和形成率。本發(fā)明的一種實施方案直接允許用戶定義數(shù)據(jù)的圖形表示。用戶期望的特定無用單元回收信息可以基于要求輸入產(chǎn)生數(shù)據(jù)繪制。
在一種實施方案中,對比無用單元回收仿真數(shù)據(jù)和無用單元回收數(shù)據(jù)產(chǎn)生一個圖形表示。在另一種實施方案中,對比無用單元回收仿真數(shù)據(jù)和另一套無用單元回收仿真數(shù)據(jù)產(chǎn)生一個圖形表示。更佳的是,任何數(shù)量的無用單元仿真的數(shù)據(jù)集間可以進行比較。對比的圖形表示允許用戶分析同一應(yīng)用程序的多種不同的堆棧參數(shù)操作,而且允許用戶選擇想要的應(yīng)用程序的堆棧參數(shù)集。
用戶被呈獻給一些無用單元數(shù)據(jù)仿真信息的圖形表示。使用這些圖形表示,用戶可以分析一個用于程序的無用單元數(shù)據(jù)活動。根據(jù)呈獻在圖形表示中的信息,用戶可以設(shè)想為了優(yōu)化應(yīng)用程序的性能而改變各種輸入?yún)?shù)并返回仿真。
在步驟255中,它確定是否運行另一個仿真。在一個實施方案中,這個決定是由用戶做出的。假設(shè)用戶決定運行另一個仿真,程序200返回到步驟230中,且至少一個新的堆棧參數(shù)被輸入。否則,假設(shè)用戶不想運行另一個仿真,程序200繼續(xù)執(zhí)行到步驟250。
在圖2A的步驟260中,優(yōu)化的堆棧參數(shù)可以插入到JVM中。在一種實施方案中,堆棧參數(shù)由無用單元回收仿真作為一個字符串提供(如圖5的JVM選項535)。在一種實施方案中,字符串由無用單元回收仿真直接插入到JVM中。在另一種實施方案中,優(yōu)化由無用單元回收仿真直接復(fù)制并粘貼字符串到JVM。
在步驟265中,它確定是否繼續(xù)仿真結(jié)果的分析。在一種實施方案中,這個決定是由優(yōu)化作出的。假定用戶決定繼續(xù)分析,程序200返回到步驟210。否則,假設(shè)用戶不想繼續(xù)分析,程序200繼續(xù)執(zhí)行到步驟270。
在步驟270中,具有優(yōu)化的堆棧參數(shù)的應(yīng)用程序在JVM中執(zhí)行。在一種實施方案。更佳的是,步驟270是可選的,優(yōu)化堆棧參數(shù)是可靠的。然而,因為優(yōu)化堆棧參數(shù)是仿真的結(jié)果,希望通過運行有這優(yōu)化堆棧參數(shù)的應(yīng)用程序來確定其有效性。
圖7是根據(jù)本發(fā)明的一種實施方案,說明數(shù)據(jù)在JVM705和存儲器使用仿真715(如無用單元回收仿真)間流動的流程圖700。更佳的是,JVM705和存儲器使用仿真715可以留駐在相同的計算機系統(tǒng)或不同的計算機系統(tǒng)中。在JVM705和存儲器使用仿真715(如存儲器使用數(shù)據(jù)720和優(yōu)化參數(shù)745)間的數(shù)據(jù)傳送通常很小,無論JVM705和存儲器使用仿真715留駐在哪里,都非常便于傳送。
基于JAVA的應(yīng)用程序710在JVM705中執(zhí)行,其中存儲器使用數(shù)據(jù)720被產(chǎn)生。存儲器使用數(shù)據(jù)720傳送到存儲器使用仿真715。存儲器使用數(shù)據(jù)720包含存儲器使用信息,包括與每個無用單元回收相關(guān)的計時信息。存儲器使用仿真715產(chǎn)生存儲器使用數(shù)據(jù)的圖形表示740。
響應(yīng)圖形表示740,至少一個參數(shù)被輸入到存儲器使用仿真715??晒┻x擇的,工作負(fù)荷特性730和仿真配置735被輸入到存儲器使用仿真715。根據(jù)存儲器使用數(shù)據(jù)720和輸入的堆棧參數(shù)725,仿真被執(zhí)行。特別的,根據(jù)存儲器使用數(shù)據(jù)720,一些假定被做出。例如,在無用單元回收間的線性概率被假設(shè)。通過假設(shè)無用單元回收的性能,仿真可以根據(jù)堆棧參數(shù)的變化而操作。更佳的是,本發(fā)明的其它實施方案可以做出不同的假定。
在一種實施方案中,一旦完成仿真,圖形表示740根據(jù)仿真的結(jié)果而更新顯示。更佳的是,仿真可以為堆棧參數(shù)725重復(fù)任何次。一旦決定堆棧參數(shù)是優(yōu)化的,優(yōu)化堆棧參數(shù)745可以插入到JVM。
本發(fā)明的優(yōu)選實施方案,一種優(yōu)化計算機應(yīng)用程序的存儲器使用方法被描述。雖然本發(fā)明是以特定的實施方案來描述的,本發(fā)明并不局限在這些實施方案中,而是參照以下權(quán)利要求而解釋的。
權(quán)利要求
1.優(yōu)化計算機應(yīng)用程序(710)存儲器使用的方法,該方法包括a)接收(215)應(yīng)用程序存儲器使用數(shù)據(jù)(720),該應(yīng)用程序存儲器使用數(shù)據(jù)(720)包括計時信息;b)產(chǎn)生(225)該應(yīng)用程序存儲器使用數(shù)據(jù)的圖形表示(740);c)接收(230)至少一個堆棧參數(shù)(725);和d)根據(jù)該存儲器使用數(shù)據(jù)(720)和該堆棧參數(shù)(725)操作(245)存儲器使用仿真。
2.權(quán)利要求1中的方法,其中計算機程序是基于Java的。
3.權(quán)利要求1中的方法,還包括插入(260)堆棧參數(shù)到程序語言解釋器。
4.權(quán)利要求3中的方法,其中程序語言解釋器是Java虛擬機。
5.權(quán)利要求1中的方法,其中堆棧參數(shù)(725)響應(yīng)用戶輸入而被接收。
6.權(quán)利要求1中的方法,還包括重復(fù)c)和d)優(yōu)化無用單元回收。
7.權(quán)利要求1中的方法,還包括產(chǎn)生(250)無用單元回收仿真的圖形表示(740)。
8.權(quán)利要求1中的方法,其中存儲器使用數(shù)據(jù)(720)由存儲器分配性能跟蹤接收。
9.權(quán)利要求8中的方法,其中存儲器分配跟蹤作為-Xverbosegc數(shù)據(jù)記錄。
10.權(quán)利要求1中的方法,其中d)包括接收(605)存儲器使用數(shù)據(jù);根據(jù)存儲器使用數(shù)據(jù)確定(610)仿真模型;根據(jù)存儲器使用數(shù)據(jù)確定(615)堆棧配置和堆棧策略;接收(620)至少一個堆棧參數(shù);為存儲器使用數(shù)據(jù)的至少一個測量間隔確定(625)仿真特性;根據(jù)仿真特性仿真(630)一個應(yīng)用程序運行。
全文摘要
優(yōu)化計算機應(yīng)用程序中存儲器使用的方法。接收(215)存儲器使用數(shù)據(jù)(720),其中存儲器使用數(shù)據(jù)(720)包括計時信息。產(chǎn)生(225)存儲器使用數(shù)據(jù)(720)的圖形表示(740)。接收(230)至少一個堆棧參數(shù)(725)。根據(jù)存儲器使用數(shù)據(jù)(720)和堆棧參數(shù)(725),運行(245)存儲器使用仿真。
文檔編號G06F11/34GK1447224SQ0310731
公開日2003年10月8日 申請日期2003年3月20日 優(yōu)先權(quán)日2002年3月21日
發(fā)明者J·A·科哈, A·卡卡雷, T·C·奧康斯基 申請人:惠普公司