專利名稱::面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及計(jì)算機(jī)領(lǐng)域,并具體涉及存儲(chǔ)器轉(zhuǎn)儲(chǔ)(memorydump),更具體地,涉及一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法和裝置。
背景技術(shù):
:存儲(chǔ)器轉(zhuǎn)儲(chǔ)是指將某一時(shí)刻主存儲(chǔ)器的內(nèi)容復(fù)制到更持久性的介質(zhì)例如硬盤中。它常常是在計(jì)算機(jī)程序異常中止時(shí)發(fā)生的,記錄了計(jì)算機(jī)程序在此時(shí)的工作存儲(chǔ)器的狀態(tài),因此可用于診斷和調(diào)試計(jì)算機(jī)程序中的錯(cuò)誤。對(duì)于軟件開發(fā)者來說,由疏忽的和/或惡意的存儲(chǔ)器使用所造成的軟件缺陷是很常見的,并且這樣的錯(cuò)誤是很難診斷和糾正的。嚴(yán)重的存儲(chǔ)器錯(cuò)誤導(dǎo)致整個(gè)軟件系統(tǒng)停止。因此,對(duì)存儲(chǔ)器使用狀況的全局性了解對(duì)于軟件分析和優(yōu)化是4艮有用的。而對(duì)于系統(tǒng)管理員來說,當(dāng)有多個(gè)軟件包被部署在同一軟件運(yùn)行時(shí)系統(tǒng)中時(shí),該多個(gè)軟件包之間可能存在的存儲(chǔ)器爭用會(huì)導(dǎo)致整個(gè)運(yùn)行時(shí)系統(tǒng)處于不穩(wěn)定的狀態(tài)。因此,使用存儲(chǔ)器轉(zhuǎn)儲(chǔ)來了解運(yùn)行時(shí)系統(tǒng)在特定時(shí)刻的存儲(chǔ)器狀態(tài),有助于發(fā)現(xiàn)和排除多個(gè)軟件包之間的存儲(chǔ)器爭用??傊鎯?chǔ)器轉(zhuǎn)儲(chǔ)是一種用于存儲(chǔ)器問題確定和調(diào)試的極重要的方法,特別是當(dāng)目標(biāo)系統(tǒng)崩潰、而使用其他手段又無法定位出錯(cuò)代碼的時(shí)候。通常的存儲(chǔ)器轉(zhuǎn)儲(chǔ)是全局性轉(zhuǎn)儲(chǔ),即將存儲(chǔ)器空間的全部內(nèi)容復(fù)制出來。然而,這種全局性轉(zhuǎn)儲(chǔ)存在著如下幾個(gè)缺點(diǎn)一是低效率,全局性轉(zhuǎn)儲(chǔ)需要消耗大量的資源,例如磁盤空間、CPU時(shí)間、以及i/o帶寬等,并且對(duì)很大的存儲(chǔ)器轉(zhuǎn)儲(chǔ)文件進(jìn)行分析也是很消耗資源的活動(dòng);二是在某些情況下不可行,例如有些關(guān)鍵性任務(wù)不能停止,當(dāng)磁盤空間、CUP時(shí)間、I/O帶寬等資源受限制時(shí)也無法進(jìn)行全局性轉(zhuǎn)儲(chǔ);三是必要性不大,在很多情況下,開發(fā)人員對(duì)錯(cuò)誤代碼所在的存儲(chǔ)器空間范圍有一定的判斷,因此希望只轉(zhuǎn)儲(chǔ)較窄范圍內(nèi)的存儲(chǔ)器空間;此外,每次只轉(zhuǎn)儲(chǔ)存儲(chǔ)器空間的一小部分也有利于更迅速精確地定位錯(cuò)誤代碼。與上述全局性存儲(chǔ)器轉(zhuǎn)儲(chǔ)不同,部分存儲(chǔ)器轉(zhuǎn)儲(chǔ)只轉(zhuǎn)儲(chǔ)可能很大的存儲(chǔ)器空間的指定部分。當(dāng)前存在如下幾種支持部分存儲(chǔ)器轉(zhuǎn)儲(chǔ)的技術(shù)方案。DigitalUNIX操作系統(tǒng)(見數(shù)字設(shè)備公司的DigitalUNIXKernelDebugging,PartNumber:AA-PS2TE-TE,March1996)提供了對(duì)部分和完整存儲(chǔ)器轉(zhuǎn)儲(chǔ)的支持,這兩種轉(zhuǎn)儲(chǔ)都包括整個(gè)計(jì)算機(jī)系統(tǒng)崩潰時(shí)的物理存儲(chǔ)器內(nèi)容。但這種轉(zhuǎn)儲(chǔ)方案是面向整個(gè)計(jì)算機(jī)系統(tǒng)的,而不是面向應(yīng)用軟件系統(tǒng)的。才示題為"Selectivedumpmethodandapparatus"的美國專利No.5293612公開了一種用于提供部分存儲(chǔ)器內(nèi)容轉(zhuǎn)儲(chǔ)的方法和裝置。該專利的方法利用頁表、TLB以及另一未凍結(jié)(unfrozen)的處理器來有選擇地轉(zhuǎn)儲(chǔ)分頁的可尋址存儲(chǔ)器。所轉(zhuǎn)儲(chǔ)的存儲(chǔ)器內(nèi)容也是面向整個(gè)計(jì)算機(jī)系統(tǒng)的。才示題為"Memorydumpgenerationwithquickreboot"的美國專利申請(qǐng)No.20060041739A1公開了一種可以將物理存儲(chǔ)器轉(zhuǎn)儲(chǔ)到二級(jí)存^i殳備(SSD)、并且降低重啟系統(tǒng)的延遲的方法。存儲(chǔ)器轉(zhuǎn)儲(chǔ)是在系統(tǒng)重啟時(shí)完成的。重啟后,對(duì)存儲(chǔ)器中的程序映像進(jìn)行掃描,嘗試判斷造成系統(tǒng)重啟的原因。如果能夠順利判斷重啟的原因,即不必形成整個(gè)存儲(chǔ)器的轉(zhuǎn)儲(chǔ)副本以供故障分析。雖然該專利旨在盡可能降低全局性存儲(chǔ)器轉(zhuǎn)儲(chǔ)的開銷,但該專利的方法本質(zhì)上仍然需要生成全局性存儲(chǔ)器轉(zhuǎn)儲(chǔ),只是在系統(tǒng)重啟時(shí)對(duì)已經(jīng)生成的全局性存儲(chǔ)器轉(zhuǎn)儲(chǔ)作進(jìn)一步的分析,以判斷是否有保留該SSD副本、以供進(jìn)一步故障分析的必要。此外,該專利的方法所轉(zhuǎn)儲(chǔ)的存儲(chǔ)器內(nèi)容是物理存儲(chǔ)器,而非虛擬存儲(chǔ)器的內(nèi)容。在運(yùn)行現(xiàn)代操作系統(tǒng)的計(jì)算機(jī)上,物理存儲(chǔ)器的布局對(duì)應(yīng)用系統(tǒng)而言是無含義的。所轉(zhuǎn)儲(chǔ)的物理存儲(chǔ)器內(nèi)容需要有非常專業(yè)的系統(tǒng)軟件知識(shí)才能分析,無法為一般的軟件開發(fā)人員所使用。還有,該專利的方法需要重新啟動(dòng)整個(gè)操作系統(tǒng),而不是一種在線的存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法,不能根據(jù)使用者發(fā)出的指令隨時(shí)進(jìn)行局部的存儲(chǔ)器轉(zhuǎn)儲(chǔ)。"UnixWare7Documentation"中的"Analyzingsystemdumpsusingkcrash"描述了用于對(duì)操作系統(tǒng)內(nèi)核進(jìn)行調(diào)試的工具kcrash。kcrash能實(shí)現(xiàn)部分存儲(chǔ)器轉(zhuǎn)儲(chǔ),但是所轉(zhuǎn)儲(chǔ)的內(nèi)容是物理存儲(chǔ)器,而且其粒度是物理頁面。這種轉(zhuǎn)儲(chǔ)對(duì)操作系統(tǒng)內(nèi)核調(diào)試有意義,但不適合于應(yīng)用程序員,因?yàn)槲锢泶鎯?chǔ)器地址對(duì)于任何一個(gè)用戶級(jí)別的軟件系統(tǒng)而言沒有價(jià)值。此外,kcrash要求在系統(tǒng)即將崩潰時(shí)運(yùn)行。因此,kcrash所基于的技術(shù)無法直接轉(zhuǎn)換并應(yīng)用到應(yīng)用軟件系統(tǒng)的故障診斷中。"HP-UXlliVersion1.5SystemCrashDumpWhitePaper"描述了一種與上述kcrash大體相同的工具,其用于操作系統(tǒng)崩潰時(shí)的故障診斷,并且是對(duì)物理存儲(chǔ)器中的頁面進(jìn)行轉(zhuǎn)儲(chǔ)。這種方法與工具并不能用于應(yīng)用軟件系統(tǒng)的故障診斷中。"SUPER-UXSystemAdministrator'sGuide"提出了一種DumpCollection方法,它也是用于系統(tǒng)級(jí)失效(即操作系統(tǒng)崩潰)時(shí)的故障診斷,且可以根據(jù)物理存儲(chǔ)器地址范圍做字節(jié)粒度的轉(zhuǎn)儲(chǔ)。如前所述,這種方法與工具也不能用于應(yīng)用軟件系統(tǒng)的故障診斷。"QuickSpecsofHPOpenVMSVersion8.3forAlphaandIntegrityServers"中的"SystemDumpAnalyzer(SDA)Utility"描述了由HPOpenVMS多用戶操作系統(tǒng)提供的系統(tǒng)轉(zhuǎn)儲(chǔ)分析工具,其主要功能是在系統(tǒng)失效時(shí)對(duì)主存儲(chǔ)器中的一部分進(jìn)行轉(zhuǎn)儲(chǔ)。轉(zhuǎn)儲(chǔ)的存儲(chǔ)器內(nèi)容也可存放在二級(jí)存儲(chǔ)介質(zhì)上。HPOpenVMS所提供的該工具也U于物理存儲(chǔ)器內(nèi)容的轉(zhuǎn)儲(chǔ)。如前所述,這種轉(zhuǎn)儲(chǔ)所提供的是操作系統(tǒng)對(duì)存儲(chǔ)器的視圖,而不是一個(gè)應(yīng)用軟件系統(tǒng)對(duì)存儲(chǔ)器的視圖。該方法仍然是基于物理地址的內(nèi)容復(fù)制,其所生成的轉(zhuǎn)儲(chǔ)信息對(duì)應(yīng)用軟件系統(tǒng)的故障診斷沒有意義;該方法不能直接或簡單轉(zhuǎn)換后用于任意軟件系統(tǒng)存儲(chǔ)器內(nèi)容的轉(zhuǎn)儲(chǔ)。某些JVM產(chǎn)品支持不同類型的存儲(chǔ)器轉(zhuǎn)儲(chǔ)。例如,IBMJDK1,4.2forz/OS提供了以下類型的轉(zhuǎn)儲(chǔ)JAVADUPM、SYSDUMP、CEEDUMP、HEAPDUMP(參見IBM,IBMDeveloperKitandRuntimeEnvironment,Java2TechnologyEdition,Version1.4.2,DiagnosticGuide,8thedition,April2006)。但所有這些類型的轉(zhuǎn)儲(chǔ)都是在整個(gè)虛擬機(jī)進(jìn)程范圍上執(zhí)行的,而無法針對(duì)其中部分的存儲(chǔ)器內(nèi)容執(zhí)行轉(zhuǎn)儲(chǔ),因此對(duì)于運(yùn)行于虛擬機(jī)上的應(yīng)用軟件的調(diào)試沒有幫助。此外,大多數(shù)軟件系統(tǒng)能夠通過具有專用和/或內(nèi)建的轉(zhuǎn)儲(chǔ)代理或通過使用特殊的硬件而在其仍然存活時(shí)進(jìn)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)(即進(jìn)行在線轉(zhuǎn)儲(chǔ))。然而,在沒有這些支持的情況下進(jìn)行存儲(chǔ)器內(nèi)容的轉(zhuǎn)儲(chǔ)即便不是不可能的,也是非常困難的。就是說,這種轉(zhuǎn)儲(chǔ)方法是特定于軟件系統(tǒng)的,而不是通用的??梢?,在本領(lǐng)域中,顯然需要一種通用的、面向應(yīng)用的、部分存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法和裝置。
發(fā)明內(nèi)容為解決現(xiàn)有技術(shù)中的上述缺點(diǎn),而提出了本發(fā)明的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法和裝置。在本發(fā)明的一個(gè)方面,提供了一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法,該方法包括以下步驟在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照給定的分區(qū)方案進(jìn)行分區(qū)的;根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中;檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。在本發(fā)明的另一個(gè)方面,提供了一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置,該裝置包括監(jiān)視器,其用于在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,以及用于根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中,其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照給定的分區(qū)方案進(jìn)行分區(qū)的;事件檢測(cè)器,其用于檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及轉(zhuǎn)儲(chǔ)器,其用于根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。本發(fā)明還可體現(xiàn)為一種機(jī)器可讀存儲(chǔ)裝置,該存儲(chǔ)裝置具有存儲(chǔ)于其上的計(jì)算機(jī)程序,該計(jì)算機(jī)程序具有可由機(jī)器執(zhí)行以使得該機(jī)器執(zhí)行前述方法權(quán)利要求的任何一個(gè)方法的步驟的多個(gè)代碼段。根據(jù)本發(fā)明的方法和裝置主要面向應(yīng)用軟件系統(tǒng),而不是局限于操作系統(tǒng);它能夠轉(zhuǎn)儲(chǔ)對(duì)于應(yīng)用軟件系統(tǒng)的運(yùn)行分析和調(diào)試有意義的信息,而的信息。此外,根據(jù)本發(fā)明的方法和裝置是通用的,可用于轉(zhuǎn)儲(chǔ)任何軟件系統(tǒng),而不需要對(duì)目標(biāo)軟件系統(tǒng)進(jìn)行需要較大工作量的重新編程。另外,根據(jù)本發(fā)明的方法和裝置對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行分區(qū)的轉(zhuǎn)儲(chǔ),而不是對(duì)其全部轉(zhuǎn)儲(chǔ),從而有利于以分而治之的方式查找或以逐步求精的方式定位目標(biāo)軟件系統(tǒng)中的存儲(chǔ)器錯(cuò)誤。所附權(quán)利要求中闡述了被認(rèn)為是本發(fā)明的特點(diǎn)的新穎特征。但是,通過在結(jié)合附圖閱讀時(shí)參照下面對(duì)說明性實(shí)施例的詳細(xì)說明,將最好地理解發(fā)明本身以及其優(yōu)選使用模式、另外的目標(biāo)以及優(yōu)點(diǎn),在附圖中圖1示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置的示意圖2示出了當(dāng)目標(biāo)軟件系統(tǒng)為使用C語言的目標(biāo)軟件系統(tǒng)時(shí)根據(jù)本發(fā)明實(shí)施例的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置的示意圖3示出了當(dāng)目標(biāo)軟件系統(tǒng)為Java中間件/應(yīng)用時(shí)根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置的示意圖4示出了目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間的實(shí)際分區(qū)和邏輯分區(qū)的原理及其區(qū)別的示例性示意圖5示出了根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置中,監(jiān)視器隨時(shí)記錄和更新目錄以及轉(zhuǎn)儲(chǔ)器依照此目錄進(jìn)行轉(zhuǎn)儲(chǔ)的示意圖;圖6示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象的世代的分區(qū)方案的示例的示意圖7示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象的大小的分區(qū)方案的示意圖8示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象所屬事務(wù)的分區(qū)方案的示意圖;以及圖9示出了根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法的流程圖。具體實(shí)施例方式下面參照附圖解釋本發(fā)明的實(shí)施例。但應(yīng)當(dāng)理解的是,本發(fā)明并不限于所介紹的特定實(shí)施例。相反,可以考慮用下面的特征和要素的任意組合來實(shí)施和實(shí)踐本發(fā)明,而無論它們是否涉及不同的實(shí)施例。本說明書內(nèi)對(duì)應(yīng)該或者就在本發(fā)明的任何單個(gè)實(shí)施例內(nèi)。相反,涉及特征和要素的語言應(yīng)被理解為意指與實(shí)施例相聯(lián)系地描述的特定特征、特性或要素被包含在本發(fā)明的至少一個(gè)實(shí)施例內(nèi)。因此,本說明書內(nèi)各處的對(duì)特征和要素的討論以及類似語言可以但不一定指的是相同實(shí)施例。此外,相關(guān)領(lǐng)域內(nèi)的技術(shù)人員可認(rèn)識(shí)到,可實(shí)現(xiàn)本發(fā)明而沒有特定實(shí)施例的一個(gè)或多個(gè)特定特征或要素。在另外的情況下,可在一些實(shí)施例內(nèi)實(shí)現(xiàn)另外的特征和要素,而這些特征可能并不存在于本發(fā)明的所有實(shí)施例內(nèi)。因此,下面的方面、特征、實(shí)施例和優(yōu)點(diǎn)僅作說明之用而不應(yīng)被看作是所附權(quán)利要求的要素或限定,除非權(quán)利要求中明確提出。類似地,談到"本發(fā)明"不應(yīng)被解釋為對(duì)此處所披露的任何發(fā)明主題的概括,也不應(yīng)被看作是所附權(quán)利要求的要素或限定,除非權(quán)利要求中明確提出。本發(fā)明提出了一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法及裝置,其通過解析給定的分區(qū)方案構(gòu)造相應(yīng)的存儲(chǔ)器分區(qū),并通過植入目標(biāo)軟件系統(tǒng)內(nèi)部的監(jiān)視器來監(jiān)視目標(biāo)軟件系統(tǒng)運(yùn)行過程中各對(duì)象的存儲(chǔ)器分配和去配操作,記錄或更新關(guān)于各對(duì)象的存儲(chǔ)器分配和去配信息,并據(jù)此更新目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間分區(qū)內(nèi)容,以便在轉(zhuǎn)儲(chǔ)時(shí)可根據(jù)需要轉(zhuǎn)儲(chǔ)特定的分區(qū),而不是目標(biāo)軟件系統(tǒng)的整個(gè)存儲(chǔ)器空間。此外,可提供基于不同標(biāo)準(zhǔn)的各種不同的分區(qū)方案,以便有針對(duì)性地構(gòu)造基于不同分區(qū)方案的不同分區(qū),從而可更有效地對(duì)轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析,并對(duì)目標(biāo)軟件系統(tǒng)運(yùn)行中的存儲(chǔ)器錯(cuò)誤進(jìn)行調(diào)試。另外,還可基于對(duì)轉(zhuǎn)儲(chǔ)的信息的分析結(jié)果發(fā)出新的轉(zhuǎn)儲(chǔ)指令或產(chǎn)生新的分區(qū)方案,從而更迅速有效地診斷和調(diào)試存儲(chǔ)器錯(cuò)誤。圖1是示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100的示意圖。如圖所示,該面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100包括分區(qū)器103,其用于基于給定的分區(qū)方案,將軟件系統(tǒng)的存儲(chǔ)器空間分區(qū);監(jiān)視器102(102-1和102-2),其用于在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,以及用于根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中;事件檢測(cè)器104,其用于檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及轉(zhuǎn)儲(chǔ)器105,其用于根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。在本發(fā)明的一些實(shí)施例中,采用了對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際分區(qū)的方法。在這種采用實(shí)際分區(qū)的實(shí)施例中,所述分區(qū)器103可首先根據(jù)給定的分區(qū)方案將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),然后在目標(biāo)軟件系統(tǒng)的運(yùn)行過程中,由監(jiān)視器102監(jiān)視目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,并將不同對(duì)象分配到相應(yīng)的分區(qū)中。在這種實(shí)際分區(qū)方法中,每一分區(qū)可以是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一個(gè)連續(xù)的區(qū)域。在本發(fā)明的另一些實(shí)施例中,采用了對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行邏輯分區(qū)的方法。在這種采用邏輯分區(qū)的實(shí)施例中,所述分區(qū)器103并未對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),而是所述監(jiān)視器102根據(jù)其所監(jiān)視的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,按照一定的分區(qū)方案將不同對(duì)象歸屬到不同的邏輯分區(qū)中。在這種邏輯分區(qū)方法中,每一分區(qū)不一定是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一連續(xù)的區(qū)域,相反地,每一分區(qū)可以是分布在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的屬于該分區(qū)的各對(duì)象的邏輯上的組合。圖4示出了目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間的實(shí)際分區(qū)以及邏輯分區(qū)的原理及其區(qū)別的示例性示意圖,其中不同圖案的方塊^R表目標(biāo)軟件系統(tǒng)中的屬于不同存儲(chǔ)器分區(qū)的對(duì)象,虛線方塊代表在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中被分配后又4皮去配的對(duì)象。在本發(fā)明的優(yōu)選實(shí)施例中,監(jiān)視器102是注入到目標(biāo)軟件系統(tǒng)中的模塊。而所述目標(biāo)軟件系統(tǒng)可以是一種語言運(yùn)行時(shí)環(huán)境,例如Java虛擬機(jī);或者可以是一種具有自動(dòng)存儲(chǔ)器管理子系統(tǒng)的運(yùn)行時(shí)系統(tǒng),例如,某種腳本語言的解釋器,如PHP腳本的執(zhí)行引擎。更一般地說,所述目標(biāo)軟件系統(tǒng)可以是其中存儲(chǔ)器請(qǐng)求可被截獲的任何軟件系統(tǒng)。例如,使用C語言編寫的軟件系統(tǒng),這種軟件系統(tǒng)的最終存儲(chǔ)器分配/去配都是由C語言的運(yùn)行時(shí)庫(CRun-Timelibrary,CRT)予以實(shí)施/實(shí)現(xiàn)的。這類應(yīng)用軟件系統(tǒng)的存儲(chǔ)器請(qǐng)求是可以被截獲的。監(jiān)視器102包括分配監(jiān)視器102-1(AMon)和去配監(jiān)視器102-2(Dmon)。所述分配監(jiān)視器102-1用于監(jiān)視目標(biāo)軟件系統(tǒng)在運(yùn)行時(shí)的存儲(chǔ)器分配操作。其掛接(hooking)位置取決于目標(biāo)軟件系統(tǒng)。例如,當(dāng)目標(biāo)軟件系統(tǒng)是C程序時(shí),AMon的掛接位置可以是C運(yùn)行時(shí)庫中的malloc()、calloc()、realloc()函數(shù)。當(dāng)目標(biāo)軟件系統(tǒng)是C十+程序時(shí),AMon的掛接位置可以是C++運(yùn)行時(shí)庫中的new()、new操作符。對(duì)于帶有自動(dòng)存儲(chǔ)器管理功能的目標(biāo)軟件系統(tǒng),AMon的掛接位置可以在該系統(tǒng)中的對(duì)象分配模塊中,例如,當(dāng)目標(biāo)軟件系統(tǒng)是JVM或其上運(yùn)行的應(yīng)用時(shí),AMon的桂接位置可以是JVMTIobjectAllocate事件。所述去配監(jiān)視器102-2用于監(jiān)M儲(chǔ)器去配^Mt。其掛接位置也取決于系統(tǒng)。例如,當(dāng)目標(biāo)軟件系統(tǒng)是C程序時(shí),DMon的掛接位置可以是C運(yùn)行時(shí)庫中的free()、calloc()函數(shù)。當(dāng)目標(biāo)軟件系統(tǒng)是C+十程序時(shí),DMon的掛接位置可以是〔++運(yùn)行時(shí)庫中的new()、delete()操作符。對(duì)于帶有自動(dòng)存儲(chǔ)器管理功能的目標(biāo)軟件系統(tǒng),DMon的掛接位置可以在該系統(tǒng)中的垃圾收集器中,例如,當(dāng)目標(biāo)軟件系統(tǒng)是JVM或其上運(yùn)行的應(yīng)用時(shí),DMon的掛接位置可以是JVMTIobjectFree事件voidJNICALLObjectFree(jvmtiEnv*jvmti—env,jlongtag)。圖2示出了當(dāng)目標(biāo)軟件系統(tǒng)為使用C語言的目標(biāo)軟件系統(tǒng)時(shí)根據(jù)本發(fā)明實(shí)施例的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100的示意圖,并具體示出了分配監(jiān)視器102-1和去配監(jiān)視器102-2的掛接位置malloc()和free()。圖3示出了當(dāng)目標(biāo)軟件系統(tǒng)為Java中間件/應(yīng)用時(shí)根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100的示意圖,并具體示出了分配監(jiān)視器102-1和去配監(jiān)視器102-2的掛接位置objectAllocate()和objectFree()。在一優(yōu)選的采用邏輯分區(qū)的實(shí)施例中,所述邏輯分區(qū)是通過如下方式實(shí)現(xiàn)的所述監(jiān)視器102或分區(qū)器103可維護(hù)一目錄(例如在主存儲(chǔ)器中或在持久存儲(chǔ)器中),而監(jiān)視器102將所監(jiān)視的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配的信息記錄或更新在該目錄中。該目錄是記錄目標(biāo)軟件系統(tǒng)在運(yùn)行過程中的存儲(chǔ)器使用狀況的中央目錄。在一優(yōu)選的實(shí)施例中,每當(dāng)分配請(qǐng)求或去配請(qǐng)求,皮成功執(zhí)行后,AMon或Dmon可記錄或更新該目錄。在一實(shí)施例中,目錄包括若干形式為元組的記錄,例如<owner,object,typesize,startaddress...>。當(dāng)然,目錄也可采取任何其他可用于記錄存儲(chǔ)器分配和去配的相關(guān)信息的結(jié)構(gòu)。所述監(jiān)視器102或分區(qū)器103可使用本領(lǐng)域的技術(shù)人員可想到的任何方式來記錄和更新所述目錄。例如,每當(dāng)監(jiān)視到目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配時(shí),在該目錄中記錄與該分配有關(guān)的信息的條目;而每當(dāng)監(jiān)視到對(duì)象的去配時(shí),可從該目錄中刪除所述條目,或者可選地,將該條目標(biāo)記為已刪除。在一實(shí)施例中,還可以從軟件系統(tǒng)的自動(dòng)存儲(chǔ)器管理單元直接得到目錄。例如,在諸如JVM的語言運(yùn)行時(shí)中的垃圾收集器已經(jīng)記錄了關(guān)于存儲(chǔ)器分配和去配的信息的精確的目錄,該目錄可用作本發(fā)明的目錄的理想來源。下表示出了根據(jù)本發(fā)明一實(shí)施例的目錄的示例<table>tableseeoriginaldocumentpage15</column></row><table>其中,owner表示已分配對(duì)象的所有者,obj表示該對(duì)象的標(biāo)識(shí),type表示該對(duì)象的類型,start表示該對(duì)象在目標(biāo)軟件系統(tǒng)存儲(chǔ)器空間中的開始地址,而size表示該對(duì)象的大小。當(dāng)然,目錄還可以包括與目標(biāo)軟件系統(tǒng)中的對(duì)象在其存儲(chǔ)器空間中的分配和去配有關(guān)的其他信息,例如,對(duì)象所屬的軟件模塊、對(duì)象的所屬的事務(wù)、對(duì)象的來源、對(duì)象的創(chuàng)建者等等信息。此外,當(dāng)所述監(jiān)視器102在目錄中記錄或更新了與目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配有關(guān)的信息后,可進(jìn)一步按照一定的分區(qū)方案,根據(jù)目錄中所記錄的在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中分配的各對(duì)象的不同屬性,例如對(duì)象的所有者、大小、類型等,將所述各對(duì)象劃分到相應(yīng)的邏輯分區(qū)中。這種劃分到邏輯地分區(qū)的操作可以在每當(dāng)監(jiān)視器102根據(jù)所監(jiān)視的對(duì)象的存儲(chǔ)器分配和去配操作記錄或更新目錄時(shí)進(jìn)行,就是說,邏輯分區(qū)是在對(duì)象分配/去配的時(shí)候動(dòng)態(tài)維護(hù)的。實(shí)際上,也可以在要進(jìn)行轉(zhuǎn)儲(chǔ)時(shí)進(jìn)行這種邏輯地劃分到分區(qū)的操作,就是說,在由事件檢測(cè)器104檢測(cè)到存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件之后,即將進(jìn)行轉(zhuǎn)儲(chǔ)之前,所述監(jiān)視器102按照分區(qū)方案,將目錄中所記錄的各對(duì)象根據(jù)其相關(guān)屬性進(jìn)行排列和分類,并劃分到其相應(yīng)的分區(qū)中。具體地,可通過在目錄中或在一單獨(dú)的表中將目錄中記錄的已分配的各對(duì)象與其所屬分區(qū)之間相關(guān)聯(lián)地記錄來將各對(duì)象劃分到不同分區(qū);或者,可通過將目錄中的各行按照分區(qū)方案重新進(jìn)行排序和排列來將各對(duì)象劃分到不同的分區(qū)中等等。盡管如上所述,在本發(fā)明的一實(shí)施例中,這種將目標(biāo)軟件系統(tǒng)的已分配對(duì)象劃分到相應(yīng)邏輯分區(qū)中的操作可由監(jiān)視器102執(zhí)行,但在本發(fā)明的其他實(shí)施倒中,該操作也可由一單獨(dú)的劃分模塊來執(zhí)行,或者可由所述分區(qū)器103來執(zhí)行,或者由如下所述由轉(zhuǎn)儲(chǔ)器105來執(zhí)行。根據(jù)本發(fā)明實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100還包括事件檢測(cè)器104,該事件檢測(cè)器用于檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件,并根據(jù)所檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件觸發(fā)轉(zhuǎn)儲(chǔ)器105進(jìn)行分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)。所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件可以是目標(biāo)軟件系統(tǒng)的程序運(yùn)行中的異常,或是通過進(jìn)程間通信(IPC)接收到的轉(zhuǎn)儲(chǔ)請(qǐng)求或信號(hào)。作為示例,所述程序運(yùn)行中的異??梢允抢缈罩羔樢茫丛L問一個(gè)不存在的地址或非法地址。這些問題將首先由處理器檢測(cè)發(fā)現(xiàn),并通過底層異常機(jī)制報(bào)告給操作系統(tǒng)。而操作系統(tǒng)會(huì)向當(dāng)前的應(yīng)用即本發(fā)明中的目標(biāo)軟件系統(tǒng)發(fā)信號(hào),以便由其處理。因此,根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的事件檢測(cè)器104可檢測(cè)到該信號(hào),并將其當(dāng)作存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件,而觸發(fā)轉(zhuǎn)儲(chǔ)器105進(jìn)行存儲(chǔ)器轉(zhuǎn)儲(chǔ)。此外,在本發(fā)明的方法和裝置作為存儲(chǔ)器錯(cuò)誤診斷的特殊支持由其他調(diào)試診斷工具所使用的應(yīng)用場(chǎng)合,所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件可以是由相應(yīng)調(diào)試診斷工具以進(jìn)程間通信(IPC)的方式發(fā)送過來的存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求。所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件也可以是接收自用戶接口等的來自用戶的轉(zhuǎn)儲(chǔ)請(qǐng)求。此外,所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件還可以是來自如下文中所述的本發(fā)明的實(shí)施例的裝置中的分析器106的重新轉(zhuǎn)儲(chǔ)請(qǐng)求。當(dāng)事件檢測(cè)器104檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件是程序運(yùn)行中的異常時(shí),事件檢測(cè)器104可通知轉(zhuǎn)儲(chǔ)器105轉(zhuǎn)儲(chǔ)相關(guān)的分區(qū)例如與異常發(fā)生地址相關(guān)的分區(qū)。當(dāng)事件檢測(cè)器104檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件是例如以IPC方式發(fā)送來的存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求時(shí),優(yōu)選地,該存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求中可包含所指定的待轉(zhuǎn)儲(chǔ)的分區(qū)。事件檢測(cè)器104可從存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求中提取該指定分區(qū),并將其通知給轉(zhuǎn)儲(chǔ)器105。作為另一種選擇,也可以在事件檢測(cè)器104接收到存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件并通知轉(zhuǎn)儲(chǔ)器105后,轉(zhuǎn)儲(chǔ)器105按照給定的分區(qū)方案順序地轉(zhuǎn)儲(chǔ)存儲(chǔ)器分區(qū),而不是從事件觸發(fā)器獲得對(duì)待轉(zhuǎn)儲(chǔ)的存儲(chǔ)器分區(qū)的指定。根據(jù)本發(fā)明實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100還包括轉(zhuǎn)儲(chǔ)器105,該轉(zhuǎn)儲(chǔ)器用于根據(jù)事件檢測(cè)器104所檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的相關(guān)的存儲(chǔ)器分區(qū)。轉(zhuǎn)儲(chǔ)器105可將相關(guān)的存儲(chǔ)器分區(qū)轉(zhuǎn)儲(chǔ)到持久存儲(chǔ)器中或指定的任何其他位置。在本發(fā)明的一實(shí)施例中,所述將目標(biāo)軟件系統(tǒng)中的已分配對(duì)象劃分到相應(yīng)分區(qū)中的功能可被包含在轉(zhuǎn)儲(chǔ)器105中。這樣,在由事件檢測(cè)器104檢測(cè)到存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件并向轉(zhuǎn)儲(chǔ)器105發(fā)出轉(zhuǎn)儲(chǔ)指令后,轉(zhuǎn)儲(chǔ)器105可通系統(tǒng)的存儲(chǔ)器空間中的位置,并然后將目標(biāo)軟件系統(tǒng)中的存儲(chǔ)器空間中的這些屬于所述邏輯分區(qū)中的對(duì)象轉(zhuǎn)儲(chǔ)到指定的持久存儲(chǔ)器或其他位置。轉(zhuǎn)儲(chǔ)器105既可以首先將目錄中所記錄的全部對(duì)象都劃分到不同的邏輯存儲(chǔ)器分區(qū)中,然后轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū);也可以優(yōu)選地僅查找和確定目錄中屬于相關(guān)的存儲(chǔ)器分區(qū)的對(duì)象,并在確定了屬于相關(guān)的存儲(chǔ)器分區(qū)的全部對(duì)象之后,將所述分區(qū)中的對(duì)象在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的內(nèi)容轉(zhuǎn)儲(chǔ)出來。圖5示意性地示出了才艮據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的轉(zhuǎn)儲(chǔ)器105通過參考由分配監(jiān)視器102-1和去配監(jiān)視器102-2所隨時(shí)記錄或更新的目錄而進(jìn)行轉(zhuǎn)儲(chǔ)。本發(fā)明的裝置既可在單處理器系統(tǒng)上實(shí)現(xiàn),也可在多處理器系統(tǒng)上實(shí)現(xiàn)。當(dāng)本發(fā)明的裝置在單處理器系統(tǒng)上實(shí)現(xiàn)時(shí),可以只包含一個(gè)轉(zhuǎn)儲(chǔ)器105,且該轉(zhuǎn)儲(chǔ)器可順序地轉(zhuǎn)儲(chǔ)目標(biāo)軟件系統(tǒng)的存儲(chǔ)空間中的不同分區(qū);也可包含多個(gè)轉(zhuǎn)儲(chǔ)器105,每個(gè)轉(zhuǎn)儲(chǔ)器獨(dú)立地轉(zhuǎn)儲(chǔ)不同的存儲(chǔ)器分區(qū),當(dāng)本發(fā)明的裝置在多處理器系統(tǒng)上實(shí)現(xiàn)時(shí),優(yōu)選地包含多個(gè)轉(zhuǎn)儲(chǔ)器,且每個(gè)轉(zhuǎn)儲(chǔ)器在一處理器的控制之下獨(dú)立地轉(zhuǎn)儲(chǔ)不同的存儲(chǔ)器分區(qū)。優(yōu)選地,根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置IOO還包括方案解析器IOI,該方案解析器用于獲得存儲(chǔ)器分區(qū)方案,并對(duì)該存儲(chǔ)器分區(qū)方案進(jìn)行解析,以便指導(dǎo)存儲(chǔ)器分區(qū)操作。分區(qū)方案可由用戶編制或指定。分區(qū)方案可作為任何格式的配置文件被提供。例如,下面是用XML編寫的分區(qū)方案配置文件示例片段,用于基于對(duì)象尺寸的存儲(chǔ)器分區(qū)<partitions〉<partitionID="1"name-,,Tiny"type="logical"〉<criteria><variablename=,,object.size,,/><conditionoperator=,,LE,,/><metricvalue="4000"/〉</criteria></partition><partitionID=,,2,,name="Normal"type="logical,,><criteria><variablename="object.size,,/><conditionoperator-,,between"/><metricvaluel-"4000"value2="64000"/></criteria〉</partition〉<partitionID=,,3,,name=,,Big"type=,,logical,,>〈criteria〉<variablename-,,object.size"/><conditionoperator-,,GE',/〉<metricvalue="64000"/></criteria〉</partition></partitions〉以上XML片段描述了一種存儲(chǔ)器分區(qū)方案按對(duì)象大小,對(duì)存儲(chǔ)器進(jìn)行如下邏輯劃分小于4000字節(jié)的計(jì)入Tiny分區(qū)(ID為1);介于4000和64000字節(jié)的計(jì)入Normal分區(qū)(ID為2);大于64000字節(jié)的計(jì)入Big分區(qū)(ID為3)。分區(qū)器103將根據(jù)分區(qū)方案構(gòu)造存儲(chǔ)器分區(qū)。在本發(fā)明的優(yōu)選實(shí)施例中,分區(qū)方案由用戶指定或編制,并提供給方案解析器101,以l更指導(dǎo)分區(qū)器103的分區(qū)操作。在本發(fā)明的其他實(shí)施例中,分區(qū)器103可以預(yù)置有一個(gè)或多個(gè)分區(qū)方案,分區(qū)器103將根據(jù)預(yù)置的分區(qū)方案進(jìn)行分區(qū)操作,就是說,在本發(fā)明的這樣的實(shí)施例中,分區(qū)方案是固定的,這樣,根據(jù)本發(fā)明的該實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)裝置中將沒有方案解析器??梢源嬖诙喾N用于將軟件系統(tǒng)中的對(duì)象劃分到不同的存儲(chǔ)器分區(qū)中的分區(qū)方案,例如基于世代的分區(qū)方案、基于對(duì)象大小的分區(qū)方案、基于事務(wù)的分區(qū)方案、基于軟件體系結(jié)構(gòu)的分區(qū)方案、基于安全/信任的分構(gòu)方案、基于質(zhì)量/置信度的分區(qū)方案、基于用戶判斷的分區(qū)方案等等?;谑来姆謪^(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象在軟件系統(tǒng)的存儲(chǔ)器區(qū),而在轉(zhuǎn)儲(chǔ)時(shí)按照世代例如一次一個(gè)世代地進(jìn)行轉(zhuǎn)儲(chǔ)。這種轉(zhuǎn)儲(chǔ)方案可適用于軟件錯(cuò)誤的診斷,其中,當(dāng)由軟件運(yùn)行異常觸發(fā)了分區(qū)轉(zhuǎn)儲(chǔ)時(shí),可以由存儲(chǔ)器空間中最新的對(duì)象開始,由近及遠(yuǎn)^查軟件代碼,從而有利于盡快找出導(dǎo)致軟件異常的原因。圖6示意性地示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象的世代的分區(qū)方案的示例?;诖笮〉姆謪^(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象的大小將已分配的對(duì)象劃分到不同的分區(qū)中。按照這種基于大小的分區(qū)方案進(jìn)行的存儲(chǔ)器轉(zhuǎn)儲(chǔ)可用于例如區(qū)別診斷快速存儲(chǔ)器泄漏和慢速存儲(chǔ)器泄漏。圖7示意性地示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象的大小的分區(qū)方案的示例。該圖的左半部分示意性地示出了根據(jù)對(duì)象大小的實(shí)際存儲(chǔ)器分區(qū),而該圖的右半部分示意性地示出了根據(jù)對(duì)象大小的邏輯存儲(chǔ)器分區(qū)?;谑聞?wù)的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象所屬的事務(wù)將已分配的對(duì)象劃分到不同分區(qū),它適用于服務(wù)器軟件系統(tǒng)的轉(zhuǎn)儲(chǔ)和診斷。在服務(wù)器軟件系統(tǒng)中,每個(gè)用戶與之建立連接之后,所進(jìn)行的全部操作一般都被視為同一個(gè)事務(wù),并且用某種唯一性的標(biāo)識(shí)進(jìn)行區(qū)分。在這種軟件系統(tǒng)中,通過基于事務(wù)的分區(qū)方案,可將相關(guān)于不同用戶的不同分區(qū)內(nèi)的存儲(chǔ)器內(nèi)容轉(zhuǎn)儲(chǔ)出來,從而可區(qū)分和分析不同用戶與服務(wù)器間的交互情況,這往往對(duì)于診斷存儲(chǔ)器錯(cuò)誤甚至安全攻擊等都有^f艮大幫助。圖8示意性地示出了根據(jù)本發(fā)明的實(shí)施例的基于目標(biāo)軟件系統(tǒng)中已分配對(duì)象所屬事務(wù)的分區(qū)方案的示例?;谲浖w系結(jié)構(gòu)的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象所屬的軟件模塊將已分配的對(duì)象劃分到不同的分區(qū)。這種分區(qū)方案適合于例如當(dāng)對(duì)軟件的體系結(jié)構(gòu)有所了解的情況下快速的查找軟件錯(cuò)誤的原因。基于安全性/信任的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象的代碼來源例如其可靠性將已分配的對(duì)象劃分到不同分區(qū)。例如,可根據(jù)從網(wǎng)絡(luò)下載的軟件的簽名是否有效來判斷其可靠性。根據(jù)這種分區(qū)方案的分區(qū)轉(zhuǎn)儲(chǔ)可用于辨識(shí)與系統(tǒng)安全性有關(guān)的存儲(chǔ)器問題?;谫|(zhì)量/置信度的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象或其所屬模塊的代碼本身的質(zhì)量等將已分配的對(duì)象劃分到不同的分區(qū)。根據(jù)這種分區(qū)方案的分區(qū)轉(zhuǎn)儲(chǔ)可用于辨識(shí)與代碼成熟度、穩(wěn)定性相關(guān)的存儲(chǔ)器問題。顯然,以上分區(qū)方案僅為示例,用以說明和例示本發(fā)明的裝置可能帶來的有益效果,而不是要將本發(fā)明局限于此。根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100可采用任何其他的分區(qū)方案。在本發(fā)明的上述實(shí)施例中,所述方案解析器101用于對(duì)所述獲得的存儲(chǔ)器分區(qū)方案文件進(jìn)行解析,并將所述解析的結(jié)果提供給分區(qū)器103,以便指導(dǎo)所述分區(qū)器103進(jìn)行分區(qū)。而在本發(fā)明的其他實(shí)施例中,所述方案解析器101可將所獲得的分區(qū)方案文件直接提供給分區(qū)器103,而由所述分區(qū)器103執(zhí)行對(duì)分區(qū)方案文件進(jìn)行解析的功能。在本發(fā)明的采用實(shí)際存儲(chǔ)器分區(qū)的實(shí)施例中,分區(qū)器103可才艮據(jù)從方案解析器101所接受的不同的分區(qū)方案或?qū)Σ煌謪^(qū)方案的不同的解析結(jié)果,來對(duì)存儲(chǔ)器進(jìn)行不同的分區(qū),并將軟件系統(tǒng)中的對(duì)象分配在各存儲(chǔ)器分區(qū)中。例如,在方案解析器101獲得基于世代的分區(qū)方案的情況下,分區(qū)器103可首先根據(jù)該分區(qū)方案將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間劃分為對(duì)應(yīng)于不同世代的不同分區(qū),然后在目標(biāo)軟件系統(tǒng)的運(yùn)行過程中,將軟件系統(tǒng)中的對(duì)象按照其所屬世代分配到相應(yīng)的分區(qū)。再例如,在方案解析器101獲得基于對(duì)象大小的分區(qū)方案的情況下,分區(qū)器103可首先根據(jù)該分區(qū)方案將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間劃分為對(duì)應(yīng)于不同對(duì)象大小的存儲(chǔ)器分區(qū),然后,在目標(biāo)軟件系統(tǒng)的運(yùn)行過程中,將待分配的對(duì)象根據(jù)其大小分配到不同的存儲(chǔ)器分區(qū)中。又例如,在方案解析器101獲得基于軟件體系結(jié)構(gòu)的分區(qū)方案器的情況下,分區(qū)器103可首先根據(jù)該分區(qū)方案將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間劃分為對(duì)應(yīng)于不同軟件模塊的存儲(chǔ)器分區(qū),然后,在目標(biāo)軟件系統(tǒng)的運(yùn)行過程中,將待分配的對(duì)象根據(jù)其所屬的軟件模塊分配到不同的存儲(chǔ)器分區(qū)中。在本發(fā)明的采用邏輯存儲(chǔ)器分區(qū)的實(shí)施例中,分區(qū)器103可根據(jù)來自方案解析器101的不同的分區(qū)方案或?qū)Σ煌謪^(qū)方案的不同的解析結(jié)果,來將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行邏輯上的分區(qū),并且由監(jiān)視器102或分區(qū)器101等將已分配的對(duì)象劃分到相應(yīng)的邏輯分區(qū)。在本發(fā)明的一優(yōu)選實(shí)施例中,所述將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行邏輯上的分區(qū)的功能可并入方案解析器101中,說是說,在這樣的采用邏輯分區(qū)的實(shí)施例中,將獲得和/或解析分區(qū)方案視為對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行了分區(qū)操作。具體地,當(dāng)所述方案解析器101從用戶獲得分區(qū)方案后,可將該分區(qū)方案或?qū)υ摲謪^(qū)方案的解析結(jié)果提供給監(jiān)視器102,監(jiān)視器102將監(jiān)視目標(biāo)軟件系統(tǒng)中的對(duì)象在其存儲(chǔ)器空間中的分配和去配,并將實(shí)現(xiàn)該分區(qū)方案所必要的信息記錄或更新在所述目錄中。也就是說,所述目錄的結(jié)構(gòu)可根據(jù)分區(qū)方案的不同而調(diào)整。例如,前述表格示出的目錄示例記錄了軟件系統(tǒng)中的對(duì)象的所有者、對(duì)象名、類型、開始地址、以及大小。該目錄可用于基于對(duì)象大小的分區(qū)方案。就是說,當(dāng)方案解析器101獲得了基于對(duì)象大小的分區(qū)方案后,監(jiān)視器102將根據(jù)來自方案解析器101的基于對(duì)象大小的分區(qū)方案或?qū)υ摲謪^(qū)方案的解析結(jié)果,將與所監(jiān)視的對(duì)象的存儲(chǔ)器分配和去配相關(guān)的對(duì)象所有者、對(duì)象標(biāo)識(shí)、類型、開始地址、以及大小等信息記錄或更新到目錄中。這樣,就可以根據(jù)目錄所記錄的有關(guān)對(duì)象大小的信息將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的已分配對(duì)象劃分到不同分區(qū)中。再例如,對(duì)于基于世代的分區(qū)方案,監(jiān)視器102可以在目錄中記錄或更新對(duì)象的所有者、對(duì)象標(biāo)識(shí)、類型、開始地址、大小、以及年齡等信息,以便可根據(jù)對(duì)象年齡將對(duì)象劃分到對(duì)應(yīng)于不同世代的分區(qū)。而對(duì)于基于事務(wù)的分區(qū)方案,監(jiān)視器102可以在目錄在記錄或更新對(duì)象的所有者、對(duì)象標(biāo)識(shí)、類型、開始地址、大小、以及對(duì)象所屬的事務(wù)ID等信息,以便可根據(jù)對(duì)象所屬事務(wù)將對(duì)象劃分到對(duì)應(yīng)于不同事務(wù)的分區(qū)。當(dāng)然,也可以考慮監(jiān)視器102可與分區(qū)方案無關(guān)地在目錄中記錄或更新與對(duì)象在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的分配和去配有關(guān)的全部信息,而僅由監(jiān)視器102或分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等根據(jù)目錄中所記錄的相關(guān)信息將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的已分配對(duì)象劃分到相應(yīng)的邏輯分區(qū)。此外,當(dāng)所述監(jiān);現(xiàn)器102在目錄中記錄或更新了與目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配有關(guān)的信息后,進(jìn)一步根據(jù)目錄中所記錄的與軟件系統(tǒng)中的對(duì)象的分配和去配有關(guān)的信息將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中已分配的對(duì)象劃分到相應(yīng)的邏輯分區(qū)中。就是i兌,監(jiān)^f見器102或分區(qū)器103等可根據(jù)目錄中所記錄的在目標(biāo)軟件的存儲(chǔ)器空間中分配的各對(duì)象的不同屬性例如對(duì)象的所有者、大小、類型等將所述各對(duì)象劃分到基于給定分區(qū)方案的相應(yīng)的邏輯分區(qū)中。例如,在方案解析器101獲得基于對(duì)象大小的分區(qū)方案的情況下,監(jiān)視器102或分區(qū)器103等可根據(jù)目錄中所記錄每個(gè)已分配對(duì)象的大小,將每個(gè)對(duì)象劃分到分區(qū)方案中所指定的具有相應(yīng)的大小范圍的邏輯分區(qū)中。又例如,在方案解析器101獲得基于軟件體系結(jié)構(gòu)的分區(qū)方案的情況下,監(jiān)視器102或分區(qū)器103等可根據(jù)目錄中所記錄每個(gè)已分配對(duì)象的所屬的軟件模塊,將每個(gè)對(duì)象劃分到分區(qū)方案中所指定的包含該軟件模塊的邏輯分區(qū)中,等等。在本發(fā)明的一優(yōu)選實(shí)施例中,所述面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100還包括分析器106,所述分析器106用于分析所述轉(zhuǎn)儲(chǔ)的存儲(chǔ)器分區(qū),以便觸發(fā)新的轉(zhuǎn)儲(chǔ),或形成新的分區(qū)方案并根據(jù)該新的分區(qū)方案進(jìn)行新的轉(zhuǎn)儲(chǔ),從而可更精確地診斷存儲(chǔ)器錯(cuò)誤的位置和根源。這種分析、觸發(fā)新的轉(zhuǎn)儲(chǔ)或形成新的分區(qū)方案的過程可重復(fù)進(jìn)行多次,直到例如找到了存儲(chǔ)器錯(cuò)誤的根源。所述分析器106可使用任何方法和裝置對(duì)轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析。在本發(fā)明的一優(yōu)選實(shí)施例中,所述分析器106是一個(gè)被提供給用戶的圖形化工具,以便由用戶對(duì)所轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析。分析的結(jié)果是對(duì)存儲(chǔ)器錯(cuò)誤的位置、性質(zhì)的進(jìn)一步判斷,從而用戶可通過分析器106或其他裝置或直接向事件檢測(cè)器104發(fā)出新的轉(zhuǎn)儲(chǔ)請(qǐng)求,該新的轉(zhuǎn)儲(chǔ)請(qǐng)求優(yōu)選地可包含對(duì)新的存儲(chǔ)器分區(qū)的指定。在本發(fā)明的其他實(shí)施例中,也可考慮在沒有用戶參與的情況下,由分析器106對(duì)所轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析,并根據(jù)分析結(jié)果向事件檢測(cè)器104發(fā)出新的轉(zhuǎn)儲(chǔ)請(qǐng)求。所述新的轉(zhuǎn)絛清求可以是請(qǐng)求轉(zhuǎn)儲(chǔ)與先前轉(zhuǎn)儲(chǔ)的分區(qū)相鄰的分區(qū),或相關(guān)的其他分區(qū),或任意其他分區(qū)。在本發(fā)明的一優(yōu)選實(shí)施例中,所述分析器106可獨(dú)立地或在用戶參與下根據(jù)對(duì)所轉(zhuǎn)儲(chǔ)的信息的分析結(jié)果形成新的分區(qū)方案,并向方案解析器101發(fā)送該新的分區(qū)方案,而方案解析器101將該新的分區(qū)方案或?qū)υ撔碌姆謪^(qū)方案的解析結(jié)果提供給分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等,從而分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等可才艮據(jù)該新的分區(qū)方案或?qū)ζ涞慕馕鼋Y(jié)果進(jìn)行分區(qū),并且在事件檢測(cè)器104檢測(cè)到存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件后,由轉(zhuǎn)儲(chǔ)器105轉(zhuǎn)儲(chǔ)基于該新的分區(qū)方案的分區(qū)。優(yōu)選地,所述分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等在接收到來自方案解析器101的所述新的分區(qū)方案或?qū)ζ涞慕馕鼋Y(jié)果之后,直接基于現(xiàn)有的目錄中所記錄的與軟件系統(tǒng)中已分配的對(duì)象有關(guān)的信息將對(duì)象劃分到不同分區(qū),而不是等待監(jiān)視器102對(duì)目標(biāo)軟件系統(tǒng)的運(yùn)行進(jìn)行重新監(jiān)視、并將所監(jiān)視的關(guān)于軟件系統(tǒng)中的對(duì)象的分配和去配的信息重新記錄或更新到目錄中,然后再基于該目錄中的新的關(guān)于已分配的對(duì)象的信息來將對(duì)象劃分到不同分區(qū)。當(dāng)然,也可以考慮在方案解析器101獲得新的分區(qū)方案后,在將該新的分區(qū)方案或?qū)ζ涞慕馕鼋Y(jié)果提供給分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等的同時(shí),也將其提供給監(jiān)視器102,而由監(jiān)視器102監(jiān)視目標(biāo)軟件系統(tǒng)的運(yùn)行,并將實(shí)現(xiàn)該新的分區(qū)方案所必需的、與軟件系統(tǒng)中對(duì)象的分配和去配的有關(guān)信息記錄或更新到目錄中,然后由分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等根據(jù)該目錄中所記錄的關(guān)于已分配的對(duì)象的新的信息按照新的分區(qū)方案進(jìn)行分區(qū),從而轉(zhuǎn)儲(chǔ)器105可轉(zhuǎn)儲(chǔ)該新的分區(qū)方案中的新的分區(qū)。這種根據(jù)對(duì)轉(zhuǎn)儲(chǔ)的信息的分析進(jìn)行新的轉(zhuǎn)儲(chǔ)或形成新的分區(qū)方案的方法使得對(duì)存儲(chǔ)器錯(cuò)誤的逐步的或不斷細(xì)化的定位成為可能,從而有利于迅速地找到存儲(chǔ)器錯(cuò)誤的精確位置和根源。所述新的分區(qū)方案既可以基于與先前的分區(qū)方案所基于的不同類的標(biāo)準(zhǔn),也可以基于與先前的分區(qū)方案所基于的同類的但更細(xì)化的標(biāo)準(zhǔn)。根據(jù)所述新的分區(qū)方案形成的分區(qū)既可以與才艮據(jù)先前的分區(qū)方案形成的分區(qū)相鄰,也可以是4艮據(jù)先前的分區(qū)方案形成的分區(qū)中的部分。例如,用戶最初不能確定存儲(chǔ)器錯(cuò)誤的具體位置,而對(duì)整個(gè)存儲(chǔ)器進(jìn)行轉(zhuǎn)儲(chǔ)分析的代價(jià)太高,于是決定采用"分而治之"的策略進(jìn)行分析診斷。首先構(gòu)造了一個(gè)1/8-7/8的分區(qū)方案,在轉(zhuǎn)儲(chǔ)時(shí)轉(zhuǎn)儲(chǔ)的是整個(gè)存儲(chǔ)器的最低端1/8范圍。通過對(duì)這一范圍的分析發(fā)現(xiàn),存儲(chǔ)器問題并非發(fā)生在這一分區(qū)。于是決定對(duì)剩余的7/8存儲(chǔ)器區(qū)域進(jìn)行再次劃分,從而形成了1/7-6/7的新方案。這是分區(qū)之間相鄰的例子。再例如,用戶通過對(duì)第一次分區(qū)轉(zhuǎn)儲(chǔ)的內(nèi)容進(jìn)行分析,而該轉(zhuǎn)儲(chǔ)內(nèi)容涵蓋了軟件模塊A中發(fā)生的全部存儲(chǔ)器分配情況。分析結(jié)果認(rèn)為,需要進(jìn)一步細(xì)化,才能確定故障的具體位置究竟發(fā)生于A中的哪個(gè)子模塊。于是,用戶決定形成新的分區(qū)方案,根據(jù)A模塊的組成(如,包括A.l、A.2、A,3)對(duì)前面的分區(qū)做更細(xì)劃分。這是"逐步求精"類型存儲(chǔ)器m診斷的例子。以上描述了根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100。應(yīng)指出的是,上文中描述的和圖中所示的裝置的結(jié)構(gòu)僅為示例,而不是對(duì)本發(fā)明的面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100的限制。在本發(fā)明的其他實(shí)施例中,該面向軟件系統(tǒng)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100可具有更多、更少、或不同的模塊,且^^模塊之間的關(guān)系可以不同。例如,如上所述,將所述目錄中記錄的目標(biāo)軟件系統(tǒng)中已分配的對(duì)象劃分到不同的邏輯分區(qū)中的操作既可以由監(jiān)視器102執(zhí)行,與可以由分區(qū)器103執(zhí)行,也可以由轉(zhuǎn)儲(chǔ)器105執(zhí)行,也可以由一單獨(dú)的劃分模塊執(zhí)行。此外,在本發(fā)明的一采用邏輯分區(qū)的實(shí)施例中,所述分區(qū)器103的功能也可并入到方案解析器101中,也就是說,在該實(shí)施例中不存在單獨(dú)的分區(qū)器103;或者也可將上述用于將目錄中所記錄的已分配對(duì)象劃分到邏輯分區(qū)中的單獨(dú)的劃分模塊稱為分區(qū)器103。所述方案解析器101、監(jiān)視器102以及分區(qū)器103可包含在單個(gè)模塊中,該單個(gè)模塊也可被稱為分區(qū)器103。就是說,方案解析器101和監(jiān)視器102的功能可被包含在分區(qū)器103中。所述分區(qū)器103既可被^到目標(biāo)軟件系統(tǒng)中,也可位于一獨(dú)立的應(yīng)用例如一調(diào)試器中,也可作為一獨(dú)立的裝置存在。另外,在本發(fā)明的一實(shí)施例中,可以沒有所述方案解析器101,就是說,該面向軟件系統(tǒng)的存儲(chǔ)裝置以一種內(nèi)置的和固定的分區(qū)方案進(jìn)行分區(qū)和轉(zhuǎn)儲(chǔ)。這些變化都處于本發(fā)明的精神和范圍之內(nèi)。下面參照?qǐng)D9描述根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法。為敘述方便起見,這種描述主要是參照以上所述以及圖1中所示的根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器裝置進(jìn)行的,但應(yīng)指出的是,本發(fā)明的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器方法也可由其他裝置來實(shí)現(xiàn)。如圖所示,該方法包括以下步驟在步驟卯l中,獲得存儲(chǔ)器分區(qū)方案。該步驟可由例如根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的方案解析器101執(zhí)行。存儲(chǔ)器分區(qū)方案用于指導(dǎo)存儲(chǔ)器分區(qū)操作,其可由用戶編制或指定。分區(qū)方案可作為任何格式例如XML格式的配置文件^皮提供。在本發(fā)明的某些實(shí)施例中,可根據(jù)預(yù)置的和固定的分區(qū)方案進(jìn)行存儲(chǔ)器分區(qū)操作,這樣,在本發(fā)明的這些實(shí)施例中,將不存在該獲得存儲(chǔ)器分區(qū)方案的步驟。在本發(fā)明的一個(gè)實(shí)施例中,可將所獲得的分區(qū)方案直接提供給后續(xù)步驟。在本發(fā)明的另一個(gè)實(shí)施例中,還可以對(duì)所述獲得的存儲(chǔ)器分區(qū)方案進(jìn)行解析,并將所述解析結(jié)果提供后續(xù)步驟,以便指導(dǎo)進(jìn)行記錄和分區(qū)等^Mt??梢源嬖诙喾N用于將軟件系統(tǒng)中的對(duì)象劃分到不同的存儲(chǔ)器分區(qū)中的分區(qū)方案,例如基于世代的分區(qū)方案、基于事務(wù)的分區(qū)方案、基于對(duì)象大小的分區(qū)方案、基于軟件體系結(jié)構(gòu)的分區(qū)方案、基于安全/信任的分構(gòu)方案、基于質(zhì)量/置信度的分區(qū)方案、基于用戶判斷的分區(qū)方案等等。其中,基于世代的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象在軟件系統(tǒng)的存儲(chǔ)器空間中已存在的時(shí)間將對(duì)象劃分到對(duì)應(yīng)于不同世代的不同分區(qū),而在轉(zhuǎn)儲(chǔ)時(shí)按照世代例如一次一個(gè)世代地進(jìn)行轉(zhuǎn)儲(chǔ)?;谑聞?wù)的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象所屬的事務(wù)將已分配的對(duì)象劃分到不同分區(qū),它適用于服務(wù)器軟件系統(tǒng)的轉(zhuǎn)儲(chǔ)和診斷?;诖笮〉姆謪^(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象的大小將已分配的對(duì)象劃分到不同的分區(qū)中?;谲浖w系結(jié)構(gòu)的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象所屬的軟件模塊將已分配的對(duì)象劃分到不同的分區(qū)?;诎踩?信任的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象的代碼來源例如其可靠性將已分配的對(duì)象劃分到不同分區(qū)?;谫|(zhì)量/置信度的分區(qū)方案是指根據(jù)軟件系統(tǒng)中的對(duì)象或其所屬模塊的代碼本身的質(zhì)量等將已分配的對(duì)象劃分到不同的分區(qū)。顯然,以上分區(qū)方案僅為示例,用以說明和例示本發(fā)明的方法可能帶來的有益效果,而不是要將本發(fā)明局限于此。根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法可采用任何其他的分區(qū)方案。在步驟卯2中,基于所述分區(qū)方案對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行分區(qū)。這種分區(qū)既可以是對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行的實(shí)際分區(qū),也可以是對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行的邏輯分區(qū)。在本發(fā)明的方法的采用實(shí)際分區(qū)的實(shí)施例中,在該步驟卯2中根據(jù)給定的分區(qū)方案將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),然后在目標(biāo)軟件系統(tǒng)的運(yùn)行過程中,根據(jù)監(jiān)視到的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,將不同對(duì)象分配到相應(yīng)的分區(qū)中。在這種實(shí)際分區(qū)方法中,每一分區(qū)可以是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一個(gè)連續(xù)的區(qū)域。而在本發(fā)明的方法的采用邏輯分區(qū)的實(shí)施例中,在該步驟卯2中并未對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),而是在隨后的步驟中,在監(jiān)視到目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配之后,按照一定的分區(qū)方案將不同對(duì)象歸屬到不同的邏輯分區(qū)中。在這種邏輯分區(qū)方法中,每一分區(qū)不一定是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一連續(xù)的區(qū)域,相反地,每一分區(qū)可以是分布在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的屬于該分區(qū)的各對(duì)象的邏輯上的組合。在步驟903中,在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配。該監(jiān)視操作可由例如根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的監(jiān)視器102執(zhí)行。在本發(fā)明的優(yōu)選實(shí)施例中,所述監(jiān)視操作由注入到目標(biāo)軟件系統(tǒng)中的監(jiān)視器102模塊通過截獲目標(biāo)軟件系統(tǒng)中的存儲(chǔ)器分配和去配操作來進(jìn)行。在本發(fā)明的優(yōu)選實(shí)施例中,所述監(jiān)視器102包括用于監(jiān)視目標(biāo)軟件系統(tǒng)在運(yùn)行時(shí)的存儲(chǔ)器分配操作的分配監(jiān)視器102-1(AMon),和用于監(jiān)視目標(biāo)軟件系統(tǒng)在運(yùn)行時(shí)的存儲(chǔ)器去配操作的去配監(jiān)視器102-2(DMon)。所述AMon和DMon在目標(biāo)軟件系統(tǒng)中的掛接位置取決于目標(biāo)軟件系統(tǒng)的種類。例如,當(dāng)目標(biāo)軟件系統(tǒng)是C程序時(shí),AMon的掛接位置可以是C運(yùn)行時(shí)庫中的malloc()、calloc()、realloc()函數(shù),而DMon的掛接位置可以是C運(yùn)行時(shí)庫中的free()、calloc()函數(shù)。當(dāng)目標(biāo)軟件系統(tǒng)是C+十程序時(shí),AMon的掛接位置可以是C+十運(yùn)行時(shí)庫中的new()、new[操作符,而DMon的掛接位置可以是C+十運(yùn)行時(shí)庫中的new()、delete()操作符。對(duì)于帶有自動(dòng)存儲(chǔ)器管理功能的目標(biāo)軟件系統(tǒng),AMon的掛接位置可以在該系統(tǒng)中的對(duì)象分配模塊中,而DMon的掛接位置可以在該系統(tǒng)中的垃圾收集器中,例如,當(dāng)目標(biāo)軟件系統(tǒng)是JVM或其上運(yùn)行的應(yīng)用時(shí),AMon的桂接位置可以是JVMTIobjectAllocate事件,而DMon的掛接位置可以是JVMTIobjectFree事件。這就是說,監(jiān)視器102可通過監(jiān)視對(duì)這些函數(shù)、操作符、事件等的調(diào)用來監(jiān)視存儲(chǔ)器分配和去配操作。在步驟卯4中,將所監(jiān)視到的、軟件系統(tǒng)中已分配的對(duì)象劃分到不同的存儲(chǔ)器分區(qū)中。該劃分操作可由例如根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的監(jiān)視器102、分區(qū)器103、轉(zhuǎn)儲(chǔ)器105或一單獨(dú)的劃分模塊執(zhí)行。在本發(fā)明的采用實(shí)際存儲(chǔ)器分區(qū)的實(shí)施例中,分區(qū)器103首先將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),然后才艮據(jù)監(jiān)視器102所監(jiān)視的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,按照例如在步驟901中所獲得的分區(qū)方案將不同對(duì)象分配到不同的分區(qū)中。在這種實(shí)際的分區(qū)方法中,每一分區(qū)是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一個(gè)連續(xù)的區(qū)域。在本發(fā)明的采用邏輯存儲(chǔ)器分區(qū)的實(shí)施例中,分區(qū)器103并未對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間進(jìn)行實(shí)際的分區(qū),而是根據(jù)監(jiān)視器102所監(jiān)視的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,按照例如在步驟901中所獲得的方案僅將已分配的不同對(duì)象劃分到目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間的不同的邏輯分區(qū)中。在這種邏輯分區(qū)方法中,每一分區(qū)不一定是目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的一連續(xù)的區(qū)域,相反地,每一分區(qū)可以是分布在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的屬于該分區(qū)的各對(duì)象的邏輯上的組合。在一優(yōu)選的實(shí)施例中,所述邏輯分區(qū)是通過如下方式實(shí)現(xiàn)的可例如在主存儲(chǔ)器或在持久存儲(chǔ)器中維護(hù)一目錄,監(jiān)視器102將所監(jiān)視的目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配的信息記錄或更新在該目錄中。該目錄是記錄目標(biāo)軟件系統(tǒng)在運(yùn)行過程中的存儲(chǔ)器使用的中央目錄。在一優(yōu)選的實(shí)施例中,每當(dāng)分配請(qǐng)求或去配請(qǐng)求被成功執(zhí)行后,AMon或Dmon可記錄或更新該目錄。在一實(shí)施例中,還可以從軟件系統(tǒng)的自動(dòng)存儲(chǔ)器管理單元直接得到目錄。例如,在諸如JVM的語言運(yùn)行時(shí)中的垃圾收集器已經(jīng)記錄了關(guān)于存儲(chǔ)器分配和去配的信息的精確的目錄,該目錄可用為本發(fā)明的目錄的理想來源??蓞⒖荚撃夸浰涗浀年P(guān)于目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配的信息,來將存儲(chǔ)器進(jìn)行邏輯上的分區(qū)。就是說,可按照例如在步驟卯l中所獲得的分區(qū)方案,根據(jù)目錄中所記錄的在存儲(chǔ)器中分配的各對(duì)象的不同屬性例如對(duì)象的所有者、大小、類型等將所述各對(duì)象邏輯地劃分到不同的分區(qū)中。這種邏輯上的分區(qū)操作可以在每當(dāng)監(jiān)視器102根據(jù)所監(jiān)視的對(duì)象的存儲(chǔ)器分配和去配操作記錄或更新目錄時(shí)進(jìn)行,就是說,邏輯分區(qū)是在對(duì)象分配/去配的時(shí)候動(dòng)態(tài)維護(hù)的。也可以考慮在要進(jìn)行轉(zhuǎn)儲(chǔ)時(shí)進(jìn)行邏輯上的分區(qū)操作,就是說,在進(jìn)行轉(zhuǎn)儲(chǔ)之前,按照分區(qū)方案,將目錄中所記錄的各對(duì)象根據(jù)其相關(guān)屬性進(jìn)行排列和分類,并劃分到不同的分區(qū)中。此夕卜,既可以首先將目錄中所記錄的全部對(duì)象都劃分到不同的存儲(chǔ)器分區(qū)中,然后轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū);也可以優(yōu)選地僅查找和確定目錄中屬于相關(guān)的存儲(chǔ)器分區(qū)的對(duì)象,并在確定了屬于相關(guān)的存儲(chǔ)器分區(qū)的全部對(duì)象之后,將所述分區(qū)中的對(duì)象在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的內(nèi)容轉(zhuǎn)儲(chǔ)出來??赏ㄟ^在目錄中或在一單獨(dú)的表中將目錄中記錄的所分配的各對(duì)象與其所屬分區(qū)之間相關(guān)聯(lián)地記錄來將各對(duì)象劃分到不同分區(qū);或者,可通過將目錄中的^f亍按照分區(qū)方案重新進(jìn)行排序和排列來將各對(duì)象劃分到不同的分區(qū)中,等等。具體地,監(jiān)視器102在對(duì)目標(biāo)軟件系統(tǒng)的運(yùn)行的監(jiān)視過程中,可監(jiān)視目標(biāo)軟件系統(tǒng)中的對(duì)象在其存儲(chǔ)器空間中的分配和去配,并將實(shí)現(xiàn)所述分區(qū)方案所必需的信息記錄或更新在所述目錄中。當(dāng)然,也可以考慮與分區(qū)方案無關(guān)地在目錄中記錄或更新與目標(biāo)軟件系統(tǒng)中的對(duì)象在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的分配和去配有關(guān)的全部信息,而僅根據(jù)所接收到的分區(qū)方案以及目錄中所記錄的相關(guān)信息將目標(biāo)軟件系統(tǒng)中已分配的對(duì)象分區(qū)。這樣,可以根據(jù)在步驟901中所獲得的分區(qū)方案以及目錄中所記錄的與對(duì)象的分配和去配有關(guān)的信息將目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中已分配的對(duì)象邏輯上劃分到不同的分區(qū)中。在步驟卯5中,檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件。該檢測(cè)操作可由例如根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的事件檢測(cè)器104執(zhí)行。所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件可以是目標(biāo)軟件系統(tǒng)的程序運(yùn)行中的異常,或是通過進(jìn)程間通信(IPC)接收到的轉(zhuǎn)儲(chǔ)請(qǐng)求或信號(hào)。作為示例,所述程序運(yùn)行中的異??梢允抢缈罩羔樢?,即訪問一個(gè)不存在的地址或非法地址。此外,在本發(fā)明的方法作為存儲(chǔ)器錯(cuò)誤診斷的特殊支持由其他調(diào)試診斷工具所使用的應(yīng)用場(chǎng)合,所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件可以是由相應(yīng)調(diào)試診斷工具以進(jìn)程間通信(IPC)的方式發(fā)送過來的存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求。所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件也可以是接收自用戶接口等的來自用戶的轉(zhuǎn)儲(chǔ)請(qǐng)求。此外,所述存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件還可以是基于對(duì)轉(zhuǎn)儲(chǔ)信息的分析的新的轉(zhuǎn)儲(chǔ)請(qǐng)求。當(dāng)事件檢測(cè)器104檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件是程序運(yùn)行中的異常時(shí),事件檢測(cè)器104可通知轉(zhuǎn)儲(chǔ)器105轉(zhuǎn)儲(chǔ)相關(guān)的分區(qū)例如與異常發(fā)生地址相關(guān)的分區(qū)。當(dāng)事件檢測(cè)器104檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件是例如以IPC方式發(fā)送來的存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求時(shí),優(yōu)選地,該存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求中可包含所指定的待轉(zhuǎn)儲(chǔ)的分區(qū)。事件檢測(cè)器104可從存儲(chǔ)器轉(zhuǎn)儲(chǔ)請(qǐng)求中提取該指定分區(qū),并將其通知給轉(zhuǎn)儲(chǔ)器105。作為另一種選擇,也可以在事件檢測(cè)器104接收到存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件并通知轉(zhuǎn)儲(chǔ)器105后,轉(zhuǎn)儲(chǔ)器105按照給定的轉(zhuǎn)儲(chǔ)方案順序地轉(zhuǎn)儲(chǔ)存儲(chǔ)器分區(qū),而不是從事件觸發(fā)器獲得對(duì)等轉(zhuǎn)儲(chǔ)的存儲(chǔ)器分區(qū)的指定。在步驟906中,根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。該轉(zhuǎn)儲(chǔ)操作可由例如根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置100中的轉(zhuǎn)儲(chǔ)器105執(zhí)行??蓪⑾嚓P(guān)的存儲(chǔ)器分區(qū)轉(zhuǎn)儲(chǔ)到持久存儲(chǔ)器中或指定的任何其他位置。在本發(fā)明的一實(shí)施例中,沒有單獨(dú)的劃分步驟,劃分步驟包含在該轉(zhuǎn)儲(chǔ)步驟中,因此在該轉(zhuǎn)儲(chǔ)步驟中,可通過參考所述目錄來確定要轉(zhuǎn)儲(chǔ)的存儲(chǔ)器分區(qū),即確定要轉(zhuǎn)儲(chǔ)的邏輯分區(qū)中包含的各對(duì)象及其在目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的位置,并然后將目標(biāo)軟件系統(tǒng)中的存儲(chǔ)器空間中的這些屬于所述邏輯分區(qū)中的對(duì)象轉(zhuǎn)儲(chǔ)到指定的持久存儲(chǔ)器或其他位置。本發(fā)明的方法既可在單處理器系統(tǒng)上實(shí)現(xiàn),也可在多處理器系統(tǒng)上實(shí)現(xiàn)。當(dāng)本發(fā)明的方法在單處理器系統(tǒng)上實(shí)現(xiàn)時(shí),可以由一個(gè)轉(zhuǎn)儲(chǔ)器105順序地轉(zhuǎn)儲(chǔ)目標(biāo)^it件系統(tǒng)的存儲(chǔ)空間中的不同分區(qū);也可由多個(gè)轉(zhuǎn)儲(chǔ)器105獨(dú)立地轉(zhuǎn)儲(chǔ)不同的存儲(chǔ)器分區(qū),當(dāng)本發(fā)明的方法在多處理器系統(tǒng)上實(shí)現(xiàn)時(shí),優(yōu)選地由多個(gè)轉(zhuǎn)儲(chǔ)器在不同的處理器的控制之下獨(dú)立地轉(zhuǎn)儲(chǔ)不同的存儲(chǔ)器分區(qū)。在本發(fā)明的優(yōu)選實(shí)施例中,該面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法還包括步驟907,在該步驟中,分析所轉(zhuǎn)儲(chǔ)的信息,從而可根據(jù)步驟908中的判斷在步驟卯9觸發(fā)新的轉(zhuǎn)儲(chǔ),或根據(jù)步驟910中的判斷在步驟911形成新的分區(qū)方案并隨后根據(jù)該新的分區(qū)方案進(jìn)行轉(zhuǎn)儲(chǔ),以便可更精確地診斷存儲(chǔ)器錯(cuò)誤的位置和根源。這種分析、觸發(fā)新的轉(zhuǎn)儲(chǔ)或形成新的分區(qū)方案的過程可重復(fù)進(jìn)行多次,直到例如找到了存儲(chǔ)器錯(cuò)誤的根源??墒褂萌魏畏椒ê脱b置對(duì)轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析。在本發(fā)明的一優(yōu)選實(shí)施例中,向用戶提供作為一圖形化工具的分析器106,以便由用戶對(duì)所轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析。分析的結(jié)果是對(duì)存儲(chǔ)器錯(cuò)誤的位置、性質(zhì)的進(jìn)一步判斷,從而用戶可在步驟卯9產(chǎn)生新的轉(zhuǎn)儲(chǔ)請(qǐng)求,并通過分析器106或其他裝置或直接向事件檢測(cè)器104發(fā)出該新的轉(zhuǎn)儲(chǔ)請(qǐng)求,該新的轉(zhuǎn)儲(chǔ)請(qǐng)求優(yōu)選地可包含對(duì)新的存儲(chǔ)器分區(qū)的指定。在本發(fā)明的其他實(shí)施例中,也可考慮在沒有用戶參與的情況下,由分析器106對(duì)所轉(zhuǎn)儲(chǔ)的信息進(jìn)行分析,并根據(jù)分析結(jié)果向事件檢測(cè)器104發(fā)出新的轉(zhuǎn)餘清求。所述新的轉(zhuǎn)絛清求可以是請(qǐng)求轉(zhuǎn)儲(chǔ)與先前轉(zhuǎn)儲(chǔ)的分區(qū)相鄰的分區(qū),或相關(guān)的其他分區(qū),或任意其他分區(qū)。在本發(fā)明的一優(yōu)選實(shí)施例中,所述分析器106可在步驟911獨(dú)立地或在用戶參與下根據(jù)對(duì)所轉(zhuǎn)儲(chǔ)的信息的分析結(jié)果形成新的分區(qū)方案,并返回步驟904,從而可基于該新的分區(qū)方案進(jìn)行新的分區(qū)和轉(zhuǎn)儲(chǔ)操作。優(yōu)選地,所述分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等在接收到所述新的分區(qū)或?qū)ζ涞姆治鼋Y(jié)果之后,直接基于現(xiàn)有的目錄中所記錄的與軟件系統(tǒng)中已分配的對(duì)象有關(guān)的信息將所述對(duì)象劃分到不同分區(qū),而不是等待監(jiān)視器102對(duì)目標(biāo)軟件系統(tǒng)的運(yùn)行進(jìn)行重新監(jiān)視、并將所監(jiān)視的關(guān)于對(duì)象的分配和去配的信息重新記錄或更新到目錄中,然后再基于該目錄中的新的關(guān)于已分配的對(duì)象的信息來將對(duì)象劃分到不同分區(qū)。當(dāng)然,也可以考慮在獲得新的分區(qū)方案后,在將該新的分區(qū)方案或?qū)ζ涞姆治鼋Y(jié)果提供給分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等的同時(shí),也將其提供給監(jiān)視器102,而由監(jiān)視器102監(jiān)視目標(biāo)軟件系統(tǒng)的運(yùn)行,并將實(shí)現(xiàn)該新的分區(qū)方案所必需的、與軟件系統(tǒng)中的對(duì)象的分配和去配有關(guān)的信息記錄或更新到目錄中,然后由分區(qū)器103或轉(zhuǎn)儲(chǔ)器105等根據(jù)該目錄中所記錄的關(guān)于已分配的對(duì)象的新的信息按照新的分區(qū)方案進(jìn)行分區(qū),從而轉(zhuǎn)儲(chǔ)器105可轉(zhuǎn)儲(chǔ)該新的分區(qū)方案中的新的分區(qū)。這種根據(jù)對(duì)轉(zhuǎn)儲(chǔ)的信息的分析進(jìn)行新的轉(zhuǎn)儲(chǔ)或形成新的分區(qū)方案的方法使得對(duì)存儲(chǔ)器錯(cuò)誤的逐步的或不斷細(xì)化的定位成為可能,從而有利于迅速地找到存儲(chǔ)器錯(cuò)誤的精確位置和根源。所述新的分區(qū)方案既可以基于與先前的分區(qū)方案所基于的不同類的標(biāo)準(zhǔn),也可以基于與先前的分區(qū)方案所基于的同類的但更細(xì)化的標(biāo)準(zhǔn)。根據(jù)所述新的分區(qū)方案形成的分區(qū)既可以與才艮據(jù)先前的分區(qū)方案形成的分區(qū)相鄰,也可以是根據(jù)先前的分區(qū)方案形成的分區(qū)中的部分。例如,在一種情況中,用戶可首先構(gòu)造一個(gè)1/8-7/8的分區(qū)方案,在轉(zhuǎn)儲(chǔ)時(shí)轉(zhuǎn)儲(chǔ)整個(gè)存儲(chǔ)器的最低端1/8范圍。繼而對(duì)剩余的7/8存儲(chǔ)器區(qū)域進(jìn)行再次劃分,從而形成l/7-6/7的新方案。再例如,在另一種情況中,用戶可在第一次分區(qū)轉(zhuǎn)儲(chǔ)時(shí)轉(zhuǎn)儲(chǔ)軟件模塊A中發(fā)生的全部存儲(chǔ)器分配。然后根據(jù)A模塊的組成(如,包括A.l、A.2、A,3)對(duì)前面的分區(qū)做更細(xì)劃分。以上描述了根據(jù)本發(fā)明的實(shí)施例的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法,應(yīng)注意的是,以上的描述以及圖9中所示的方法僅為示例,而不是對(duì)本發(fā)明的面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法的限制。在本發(fā)明的其他實(shí)施例中,所述方法可具有更多、更少或不同的步驟,一些步驟可合并為單個(gè)步驟,或被細(xì)分更多的步驟,且一些步驟之間的執(zhí)行順序可改變或并行執(zhí)行。例如,在本發(fā)明的一實(shí)施例中,可以沒有單獨(dú)的分區(qū)步驟902,相反,該分區(qū)步驟卯2被包括在所述獲得和/或解析存儲(chǔ)器分區(qū)方案的步驟901中,也就是說,將獲得和/或解析存儲(chǔ)器分區(qū)方案視為對(duì)目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間的分區(qū)。該分區(qū)步驟卯2也可被包括在所述劃分步驟904中,也就是說,將把目標(biāo)軟件系統(tǒng)的存儲(chǔ)器空間中的已分配對(duì)象劃分到相應(yīng)的分區(qū)視為對(duì)該存儲(chǔ)器空間的邏輯分區(qū);或者說,所述分區(qū)步驟和所述劃分步驟同時(shí)執(zhí)行,并被共同稱為分區(qū)步驟。所述獲得分區(qū)方案的步驟卯l、分區(qū)步驟902、監(jiān)視步驟卯3以及劃分步驟卯4也可以被共同稱為分區(qū)步驟。再例如,所述監(jiān)視步驟可進(jìn)一步包括將所監(jiān)視的關(guān)于目標(biāo)軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配的信息記錄或更新到目錄中的步驟?;蛘撸撚涗洸襟E也可被包含在所述劃分步驟中。又例如,所述劃分步驟也可以包含在轉(zhuǎn)儲(chǔ)步驟中,即在轉(zhuǎn)儲(chǔ)時(shí)完成劃分操作,而不再有單獨(dú)的劃分步驟,等等。所有這些變化都處在本發(fā)明的精神和范圍之內(nèi)。本文中所稱的對(duì)象是指對(duì)應(yīng)用而言具有獨(dú)立語義的實(shí)體。例如結(jié)構(gòu)化編程語言中的一個(gè)數(shù)據(jù)結(jié)構(gòu)、函數(shù)、變量等以及面向?qū)ο笳Z言中某個(gè)類的一個(gè)實(shí)例等等都可稱為一個(gè)對(duì)象。本發(fā)明可以用軟件、硬件或軟件與硬件的結(jié)合實(shí)現(xiàn)。本發(fā)明可在一個(gè)計(jì)算機(jī)系統(tǒng)上以集中方式實(shí)現(xiàn),或者,以分布方式實(shí)現(xiàn),在該分布方式中,不同的元件分布在幾個(gè)互連的計(jì)算機(jī)系統(tǒng)上。任何適用于執(zhí)行這里所介紹的方法的計(jì)算機(jī)系統(tǒng)或其它設(shè)備都是適用的。軟件與硬件的典型結(jié)合可以為具有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),該程序在被裝載和執(zhí)行時(shí)對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行控制,使得該系統(tǒng)執(zhí)行這里所介紹的方法。本發(fā)明還可嵌入在計(jì)算機(jī)程序產(chǎn)品中,該產(chǎn)品包括使這里介紹的方法得以實(shí)現(xiàn)的所有特征,且當(dāng)該產(chǎn)品被裝載在計(jì)算機(jī)系統(tǒng)上時(shí)能夠執(zhí)行這些方法。盡管已參照優(yōu)選實(shí)施例具體示出和說明了本發(fā)明,但是本領(lǐng)域內(nèi)的那些技術(shù)人員應(yīng)理解,可在形式和細(xì)節(jié)上對(duì)其進(jìn)行各種改變而不會(huì)背離本發(fā)明的精神和范圍。權(quán)利要求1.一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)方法,包括以下步驟在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照給定的分區(qū)方案進(jìn)行分區(qū)的;根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中;檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。2.根據(jù)權(quán)利要求1的方法,還包括獲得所述分區(qū)方案的步驟以及解析所述分區(qū)方案的步驟;且所述基于給定的分區(qū)方案,將軟件系統(tǒng)的存儲(chǔ)器空間分區(qū)的步驟包括基于所述解析的結(jié)果,將軟件系統(tǒng)的存儲(chǔ)器空間分區(qū)。3.根據(jù)權(quán)利要求l的方法,還包括以下步驟分析所轉(zhuǎn)儲(chǔ)的信息;以及由所述分析的結(jié)果產(chǎn)生新的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;且所述檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件的步驟包括檢測(cè)所述新的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件。4.根據(jù)權(quán)利要求l的方法,還包括以下步驟分析所轉(zhuǎn)儲(chǔ)的信息;以及由所述分析的結(jié)果生成的新的分區(qū)方案;且其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照所述新的分區(qū)方案進(jìn)行分區(qū)的。5.根據(jù)權(quán)利要求3或4的方法,其中該方法中的各步驟是循環(huán)重復(fù)執(zhí)行的。6.根據(jù)權(quán)利要求l的方法,其中所述存儲(chǔ)器分區(qū)為實(shí)際存儲(chǔ)器分區(qū)。7.根據(jù)權(quán)利要求l的方法,其中所述存儲(chǔ)器分區(qū)為邏輯存儲(chǔ)器分區(qū)。8.根據(jù)權(quán)利要求7的方法,其中所述根據(jù)所述監(jiān)視結(jié)果、將軟件系統(tǒng)中的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中的步驟包括將與所監(jiān)視的、所述軟件系統(tǒng)中的對(duì)象的所述存儲(chǔ)器分配和去配有關(guān)的信息記錄和更新到目錄中;以及根據(jù)所述目錄中記錄的信息將軟件系統(tǒng)中已分配的對(duì)象劃分到邏輯存儲(chǔ)器分區(qū)中。9.根據(jù)權(quán)利要求8的方法,其中所述將與所監(jiān)視的、所述軟件系統(tǒng)中的對(duì)象的所述存儲(chǔ)器分配和去配有關(guān)的信息記錄和更新到目錄中的步驟進(jìn)一步包括將實(shí)現(xiàn)所述分區(qū)方案所必需的、與所監(jiān)視的、所述軟件系統(tǒng)中的對(duì)象的所述存儲(chǔ)器分配和去配有關(guān)的信息記錄和更新到目錄中。10.根據(jù)權(quán)利要求1的方法,其中所述觸發(fā)事件包括程序異常和轉(zhuǎn)儲(chǔ)請(qǐng)求中的任何一個(gè)。11.根據(jù)權(quán)利要求1的方法,其中所述分區(qū)方案包括以下各項(xiàng)中的任何一個(gè)基于年齡的分區(qū)方案;基于事務(wù)的分區(qū)方案;基于對(duì)象大小的分區(qū)方案;基于軟件體系結(jié)構(gòu)的分區(qū)方案;基于安全/信任的分構(gòu)方案;基于質(zhì)量/置信度的分區(qū)方案;基于用戶判斷的分區(qū)方案。12.—種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置,包括監(jiān)視器,其用于在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,以及用于根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中,其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照給定的分區(qū)方案進(jìn)行分區(qū)的;事件檢測(cè)器,其用于檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及轉(zhuǎn)儲(chǔ)器,其用于根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。13.根據(jù)權(quán)利要求12的裝置,還包括方案解析器,其用于獲得所述分區(qū)方案,以及用于解析所述分區(qū)方案;且所述分區(qū)器進(jìn)一步被配置為基于所述解析的結(jié)果,將軟件系統(tǒng)的存儲(chǔ)器空間分區(qū)。14.根據(jù)權(quán)利要求12的裝置,還包括分析器,其用于分析所轉(zhuǎn)儲(chǔ)的信息,以及用于由所述分析的結(jié)果產(chǎn)生新的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;且所述事件檢測(cè)器被配置為檢測(cè)所述新的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件。15.根據(jù)權(quán)利要求12的裝置,還包括分析器,其用于分析所轉(zhuǎn)儲(chǔ)的信息,以及用于由所述分析的結(jié)果生成的新的存儲(chǔ)器分區(qū)方案;且其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照所述新的分區(qū)方案進(jìn)行分區(qū)的。16.根據(jù)權(quán)利要求12的裝置,其中所述存儲(chǔ)器分區(qū)為實(shí)際存儲(chǔ)器分區(qū)。17.根據(jù)權(quán)利要求12的裝置,其中所述存儲(chǔ)器分區(qū)為邏輯存儲(chǔ)器分區(qū)。18.根據(jù)權(quán)利要求17的裝置,其中所述監(jiān)視器進(jìn)一步被配置為將與所監(jiān)視的、所述軟件系統(tǒng)中的對(duì)象的所述存儲(chǔ)器分配和去配有關(guān)的信息記錄或更新到目錄中;以及根據(jù)所述目錄中記錄的信息將軟件系統(tǒng)中已分配的對(duì)象劃分到邏輯存儲(chǔ)器分區(qū)中。19.根據(jù)權(quán)利要求18的裝置,其中所述監(jiān)視器進(jìn)一步被配置為將實(shí)現(xiàn)所述分區(qū)方案所必需的、與所監(jiān)視的、所述軟件系統(tǒng)中的對(duì)象的所述存儲(chǔ)器分配和去配有關(guān)的信息記錄和更新到目錄中。20.根據(jù)權(quán)利要求12的裝置,其中所述觸發(fā)事件包括程序異常和轉(zhuǎn)儲(chǔ)請(qǐng)求中的任何一個(gè)。21.根據(jù)權(quán)利要求12的裝置,其中所述分區(qū)方案包括以下各項(xiàng)中的任何一個(gè)基于年齡的分區(qū)方案;基于所屬事務(wù)的分區(qū)方案;基于對(duì)象大小的分區(qū)方案;基于軟件體系結(jié)構(gòu)的分區(qū)方案;基于安全/信任的分構(gòu)方案;基于質(zhì)量/置信度的分區(qū)方案;基于用戶判斷的分區(qū)方案。全文摘要提供了一種面向軟件系統(tǒng)的分區(qū)存儲(chǔ)器轉(zhuǎn)儲(chǔ)裝置及方法,該裝置包括監(jiān)視器,其用于在軟件系統(tǒng)的運(yùn)行中,監(jiān)視軟件系統(tǒng)中的對(duì)象的存儲(chǔ)器分配和去配,以及用于根據(jù)所述監(jiān)視的結(jié)果,將軟件系統(tǒng)中已分配的對(duì)象劃分到相應(yīng)的存儲(chǔ)器分區(qū)中,其中所述軟件系統(tǒng)的存儲(chǔ)器空間是按照給定的分區(qū)方案進(jìn)行分區(qū)的;事件檢測(cè)器,其用于檢測(cè)存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件;以及轉(zhuǎn)儲(chǔ)器,其用于根據(jù)檢測(cè)到的存儲(chǔ)器轉(zhuǎn)儲(chǔ)觸發(fā)事件轉(zhuǎn)儲(chǔ)相關(guān)的存儲(chǔ)器分區(qū)。優(yōu)選地,該裝置還包括分析器,用于分析所轉(zhuǎn)儲(chǔ)的信息,并由分析的結(jié)果產(chǎn)生新的轉(zhuǎn)儲(chǔ)觸發(fā)事件或生成新的分區(qū)方案。文檔編號(hào)G06F9/50GK101295268SQ20071010478公開日2008年10月29日申請(qǐng)日期2007年4月27日優(yōu)先權(quán)日2007年4月27日發(fā)明者影李,滕啟明,杰邱申請(qǐng)人:國際商業(yè)機(jī)器公司