国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      垃圾收集系統(tǒng)的制作方法

      文檔序號(hào):6480553閱讀:259來(lái)源:國(guó)知局

      專利名稱::垃圾收集系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及由應(yīng)用程序(APApplicationProgram)所使用的存儲(chǔ)器中的垃圾收集(GCGarbageCollection)。
      背景技術(shù)
      :在現(xiàn)有的面向?qū)ο蟮某绦蛘Z(yǔ)言中,有的采用使AP的創(chuàng)建者意識(shí)不到存儲(chǔ)區(qū)域的分配和釋放,在使用AP之后把沒(méi)用的對(duì)象(也叫“對(duì)象實(shí)例”)所對(duì)應(yīng)的存儲(chǔ)區(qū)域的釋放交給執(zhí)行環(huán)境方的方法。例如Java語(yǔ)言。Java是美國(guó)太陽(yáng)微系統(tǒng)(SunMicrosystems)公司的商標(biāo)。使用這種語(yǔ)言所記述的AP,在具備垃圾收集(GC)機(jī)構(gòu)的執(zhí)行環(huán)境中工作,這種垃圾收集機(jī)構(gòu)可以自動(dòng)釋放沒(méi)用的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。GC機(jī)構(gòu),在執(zhí)行AP之際動(dòng)態(tài)檢測(cè)出被分配的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)沒(méi)有從任何地方被參照的狀態(tài),并釋放這個(gè)存儲(chǔ)區(qū)域,使其置于可再利用狀態(tài)。多線程結(jié)構(gòu)的AP中,各線程分別和堆棧區(qū)對(duì)應(yīng),在動(dòng)作過(guò)程中,或者在堆棧區(qū)內(nèi)存儲(chǔ)數(shù)據(jù),或者參照存儲(chǔ)的數(shù)據(jù),或者生成對(duì)象。生成對(duì)象的情況,通常,在堆棧區(qū)內(nèi)存儲(chǔ)其對(duì)象的指針,也就是說(shuō)存儲(chǔ)指示其對(duì)象在存儲(chǔ)器內(nèi)的所在位置的數(shù)據(jù)(下面叫作“對(duì)象指針”),由線程對(duì)對(duì)象的訪問(wèn)是參照其對(duì)象指針來(lái)進(jìn)行的。而且,通常,在對(duì)象的區(qū)域內(nèi)也存儲(chǔ)面向其它對(duì)象的對(duì)象指針。在某一個(gè)時(shí)刻,由AP所參照的所有對(duì)象,可以從對(duì)應(yīng)AP各線程的各堆棧區(qū)內(nèi)所包含的對(duì)象指針、直接或者通過(guò)1個(gè)以上的對(duì)象內(nèi)的對(duì)象指針,進(jìn)行追尋(辿る)。相對(duì)應(yīng)地,GC裝置基本上把某一個(gè)時(shí)刻中從堆棧區(qū)內(nèi)的對(duì)象指針不能追尋的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)作為無(wú)用區(qū)設(shè)為釋放對(duì)象。作為現(xiàn)有的GC方式所熟知的標(biāo)記和清除(MarkandSweep)方式是,對(duì)從指定的對(duì)象指針追尋的所有對(duì)象進(jìn)行標(biāo)記賦予處理之后,掃描所有的對(duì)象,釋放沒(méi)有標(biāo)記的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域的方式。在執(zhí)行多線程結(jié)構(gòu)的AP時(shí)進(jìn)行這種標(biāo)記和清除方式的GC情況下,以GC的迅速性最為優(yōu)先,簡(jiǎn)單地停止所有線程之后,進(jìn)行向由對(duì)應(yīng)各線程的堆棧區(qū)內(nèi)的對(duì)象指針追尋的所有對(duì)象賦予標(biāo)記的處理,之后解除所有線程的停止,釋放不帶標(biāo)記的對(duì)象,這樣就產(chǎn)生了如下問(wèn)題。也就是說(shuō),有可能拉長(zhǎng)AP所有線程停止的時(shí)間,這種情況下,對(duì)用戶的操作等不顯示任何反應(yīng),例如,計(jì)算機(jī)顯示器的顯示內(nèi)容是沒(méi)有變化的狀態(tài),使用戶感到困惑等問(wèn)題。作為解決這個(gè)問(wèn)題的方式,在日本專利第3027845號(hào)公報(bào)上,提出了并不全部停止多線程結(jié)構(gòu)的AP而執(zhí)行使用這種標(biāo)記和清除的GC的方式。這個(gè)方式是,對(duì)從根節(jié)點(diǎn)對(duì)象所追尋的所有對(duì)象以及從每個(gè)線程的各堆棧區(qū)內(nèi)的對(duì)象指針?biāo)穼さ乃袑?duì)象,進(jìn)行賦予標(biāo)記的第1處理,在這個(gè)第1處理中,由于AP的線程(下面稱作“AP線程”)的動(dòng)作面向?qū)ο蟮膶?duì)象指針移動(dòng)時(shí),把表示這個(gè)對(duì)象的數(shù)據(jù)存儲(chǔ)在標(biāo)記堆棧區(qū)內(nèi),在賦予這個(gè)標(biāo)記的處理結(jié)束之后的階段,還進(jìn)行對(duì)從標(biāo)記堆棧追尋的所有對(duì)象賦予標(biāo)記的第2處理,最后釋放沒(méi)有標(biāo)記的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。但是,在上述并不全部停止AP的標(biāo)記賦予方式中,因AP線程的動(dòng)作,堆棧區(qū)內(nèi)的數(shù)據(jù)變化,因此,在第1處理中,對(duì)從堆棧區(qū)內(nèi)的對(duì)象指針?biāo)穼さ膶?duì)象賦予標(biāo)記的處理中的一部分有可能無(wú)用。例如,進(jìn)行GC的線程,檢測(cè)出AP的1個(gè)堆棧區(qū)內(nèi)的對(duì)象指針(這里命名為“對(duì)象指針A”),在對(duì)從這個(gè)對(duì)象指針追尋的對(duì)象執(zhí)行賦予標(biāo)記處理(這里命名為“處理A”)的期間,對(duì)應(yīng)這個(gè)堆棧區(qū)的AP線程復(fù)制對(duì)象指針A或者復(fù)制這些對(duì)象內(nèi)的1個(gè)或多個(gè)對(duì)象指針,在堆棧區(qū)內(nèi)進(jìn)行新的存儲(chǔ)的動(dòng)作,此時(shí),進(jìn)行GC的線程在這個(gè)處理A結(jié)束之后,再次進(jìn)行一部分和處理A重復(fù)的處理,或者不得不特意進(jìn)行為防止這個(gè)重復(fù)的核對(duì)處理,這將是無(wú)用的。這個(gè)無(wú)用處理,無(wú)端增加從GC開(kāi)始到結(jié)束為止所需要的CPU時(shí)間,降低了CPU的使用效率。
      發(fā)明內(nèi)容于是,本發(fā)明正是鑒于上述問(wèn)題而做出的,其目的在于提供一種使用GC方式的垃圾收集(GC)系統(tǒng),其中該GC方式不會(huì)拉長(zhǎng)AP的所有線程停止的時(shí)間,并且可以在某種程度上抑制從GC開(kāi)始到結(jié)束為止所需要的CPU時(shí)間的無(wú)端增加。為了達(dá)到上述目的,有關(guān)本發(fā)明的GC系統(tǒng),在由多個(gè)線程組成的面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,釋放不再需要的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域,其特征在于,具備按照順序選擇多個(gè)線程中的每一個(gè)的選擇單元;實(shí)施由以下步驟組成的檢查處理的檢查單元,這些步驟為,對(duì)于被選擇的線程,停止該線程的執(zhí)行,從該線程通過(guò)參照對(duì)象指針檢測(cè)出可以訪問(wèn)的對(duì)象,把該檢測(cè)的對(duì)象作為非釋放對(duì)象進(jìn)行管理,并重新開(kāi)始該線程的執(zhí)行;檢測(cè)單元,在上述選擇單元進(jìn)行的上述選擇開(kāi)始之后,當(dāng)從執(zhí)行中的線程檢測(cè)到對(duì)象指針被作為處理對(duì)象時(shí),把該對(duì)象指針?biāo)甘镜膶?duì)象作為非釋放對(duì)象進(jìn)行管理;釋放單元,對(duì)于上述多個(gè)線程的全部,當(dāng)上述檢查處理結(jié)束之后,釋放作為非釋放對(duì)象管理的對(duì)象之外的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。這里,對(duì)象指針因線程而被作為處理對(duì)象,意味著在由CPU進(jìn)行的線程處理過(guò)程中執(zhí)行了將對(duì)象指針作為處理對(duì)象的指令。而且,將對(duì)象作為非釋放對(duì)象進(jìn)行管理指的是,例如,通過(guò)把這個(gè)對(duì)象指針從來(lái)(from)表(fromtable)移動(dòng)到去(to)表(totable)的后述方法等實(shí)現(xiàn)標(biāo)記賦予。由此,對(duì)于可以由AP線程通過(guò)堆棧內(nèi)或者對(duì)象內(nèi)的對(duì)象指針追尋的對(duì)象的作為非釋放對(duì)象的指定過(guò)程、也就是說(shuō)標(biāo)記賦予的過(guò)程中,因?yàn)橥V沽诉@個(gè)AP線程,所以不會(huì)發(fā)生該AP線程動(dòng)作而引起堆棧區(qū)內(nèi)的數(shù)據(jù)變化這種情況,這個(gè)過(guò)程中沒(méi)有了標(biāo)記賦予變得無(wú)用的危險(xiǎn)性,關(guān)于這一點(diǎn),可以防止CPU的使用效率低下。而且,由此,因?yàn)椴皇峭V顾械腁P線程而進(jìn)行上述標(biāo)記賦予,所以,可以防止AP的所有線程停止期間的拉長(zhǎng)。而且,對(duì)于由未停止所有AP線程引起的對(duì)于對(duì)象的參照狀態(tài)的變化,由于由執(zhí)行中的線程監(jiān)視對(duì)象指針被作為處理對(duì)象的情況來(lái)進(jìn)行應(yīng)對(duì),所以,對(duì)于從任何一個(gè)線程可以訪問(wèn)的對(duì)象,勢(shì)必作為非釋放對(duì)象進(jìn)行管理。而且,上述檢測(cè)單元,限于執(zhí)行中的線程還沒(méi)有進(jìn)行檢查處理的情況進(jìn)行上述檢測(cè),上述檢測(cè)單元,也可以具備如下單元,即在進(jìn)行了上述檢測(cè)的情況下,把由于執(zhí)行中的該線程而被作為處理對(duì)象的對(duì)象指針以及可以從該對(duì)象指針追尋的對(duì)象內(nèi)的對(duì)象指針,保存在對(duì)應(yīng)該線程的作業(yè)用存儲(chǔ)區(qū)的檢測(cè)部;和在由于上述檢查單元而使線程的執(zhí)行停止期間,把可以從對(duì)應(yīng)該線程的作業(yè)用存儲(chǔ)區(qū)內(nèi)的對(duì)象指針追尋的對(duì)象,作為非釋放對(duì)象進(jìn)行管理的管理部。由此,僅在線程被作為后述的參照處理對(duì)象之前的期間,也就是說(shuō),僅在線程被作為相當(dāng)于向存儲(chǔ)在對(duì)應(yīng)該線程的堆棧內(nèi)等的對(duì)象指針?biāo)甘镜膶?duì)象賦予標(biāo)記的處理的對(duì)象之前的期間,才檢測(cè)依據(jù)解釋器執(zhí)行這個(gè)線程時(shí)對(duì)象指針被作為依據(jù)線程的處理對(duì)象的情況,并進(jìn)行存儲(chǔ)在作業(yè)用存儲(chǔ)區(qū)中、即、存儲(chǔ)在對(duì)象參照信息的存儲(chǔ)區(qū)中的處理,所以,一旦線程被作為參照處理的對(duì)象之后,該線程在依據(jù)解釋器執(zhí)行時(shí),由于沒(méi)有其檢測(cè),就可以更高速地工作。另外,上述檢查處理是內(nèi)容為反復(fù)下述步驟的處理,該步驟為,把對(duì)應(yīng)于被選擇的該線程的堆棧內(nèi)的對(duì)象指針?biāo)甘镜膶?duì)象、作為上述可以訪問(wèn)的對(duì)象而檢出之際,只要檢測(cè)到的該對(duì)象尚未作為非釋放對(duì)象來(lái)管理、且該對(duì)象內(nèi)還有對(duì)象指針,就將該對(duì)象指針?biāo)甘镜膶?duì)象作為進(jìn)一步能訪問(wèn)的對(duì)象檢測(cè)出來(lái)的步驟;上述選擇單元在最初的選擇之后,由上述檢查單元進(jìn)行上述檢查處理之后,在上述多個(gè)線程中,只要還有沒(méi)有實(shí)施上述檢查處理的線程,就重新進(jìn)行選擇,上述選擇單元參照有關(guān)各線程的信息,根據(jù)預(yù)定的線程選擇條件,進(jìn)行上述選擇也可以。由此,可以防止已經(jīng)作為非管理對(duì)象而被管理的對(duì)象名下的對(duì)象,作為重復(fù)檢測(cè)的處理對(duì)象。而且,通過(guò)不做這個(gè)重復(fù)檢測(cè)的處理結(jié)構(gòu),作為參照處理的對(duì)象,比起早期選擇的線程,稍后選擇的線程在參照處理上所花費(fèi)的時(shí)間縮短的可能性高,因此,鑒于被各線程請(qǐng)求的應(yīng)答性能,可以事先確定線程的選擇條件,做某種程度的控制,使得各線程發(fā)揮適當(dāng)?shù)膽?yīng)答性能地來(lái)執(zhí)行。而且,上述線程選擇條件包括表示與線程狀態(tài)為等待(Wait)狀態(tài)以外的線程相比,先選擇線程狀態(tài)是等待狀態(tài)的線程的條件;也可以使上述選擇單元在進(jìn)行上述選擇的時(shí)刻,只要有等待狀態(tài)的線程,就選擇該等待狀態(tài)的線程。由此,就成了停止處于等待狀態(tài)的線程,因此就可以抑制對(duì)于處于當(dāng)前動(dòng)作狀態(tài)的AP線程的負(fù)面影響的產(chǎn)生。另外,上述線程選擇條件也可以包含表示與線程優(yōu)先度高的線程相比,先選擇線程優(yōu)先度低的線程的條件。由此,線程優(yōu)先度高的線程參照處理以短時(shí)間完成的可能性增大,可以在某種程度上防止執(zhí)行性能的低下。另外,上述線程選擇條件,還可以包含表示與對(duì)應(yīng)線程的堆棧尺寸大的線程相比,先選擇堆棧尺寸小的線程的條件。由此,存儲(chǔ)對(duì)象指針的堆棧的有效范圍越小參照處理所需要的時(shí)間越短,其中的對(duì)象指針指向可以從線程訪問(wèn)的對(duì)象,鑒于具有的這個(gè)傾向,可以得到在某種程度上平均各線程停止時(shí)間的效果,可以在某種程度上回避特定的線程應(yīng)答性和其他比起來(lái)明顯變壞的情況。另外,上述垃圾收集系統(tǒng)具備使用存儲(chǔ)管理單元(MMU)管理存儲(chǔ)器的存儲(chǔ)管理機(jī)構(gòu),每當(dāng)有生成對(duì)象的需要時(shí),由上述存儲(chǔ)管理機(jī)構(gòu)分配對(duì)應(yīng)該對(duì)象的存儲(chǔ)區(qū),上述釋放單元也可以通過(guò)上述存儲(chǔ)管理機(jī)構(gòu)進(jìn)行存儲(chǔ)區(qū)域的釋放。由此,對(duì)于由使用MMU的存儲(chǔ)管理機(jī)構(gòu)分配的C語(yǔ)言及其他語(yǔ)言的程序的數(shù)據(jù)區(qū)等給予同等定位,以此分配對(duì)應(yīng)于對(duì)象的存儲(chǔ)區(qū)域,因此,假設(shè)和進(jìn)行單獨(dú)管理特定的堆區(qū)(heaparea)、把該堆區(qū)內(nèi)的一部分作為對(duì)象的存儲(chǔ)區(qū)域來(lái)分配的控制的情況比較,可以得到如下的有利效果,即沒(méi)有必要在對(duì)象生成前開(kāi)始分配沒(méi)用的大的堆區(qū),對(duì)于該堆區(qū)沒(méi)有必要進(jìn)行存儲(chǔ)壓縮處理。圖1是有關(guān)本發(fā)明實(shí)施方式1的GC系統(tǒng)的功能方框圖;圖2是例示對(duì)象和對(duì)象指針之間關(guān)系的圖;圖3是表示來(lái)(from)表及去(to)表的圖;圖4A是表示參照處理前的來(lái)(from)表狀態(tài)的圖;圖4B是表示參照處理后的來(lái)(from)表及去(to)表的狀態(tài)的圖;圖5是表示線程信息、堆棧及對(duì)象參照信息的圖;圖6是表示參照處理和AP線程的狀態(tài)之間的關(guān)系的圖;圖7是表示線程選擇條件的內(nèi)容的圖;圖8是表示GC控制處理的流程圖;圖9是表示對(duì)象線程確定處理的流程圖;圖10是表示共享對(duì)象參照處理的流程圖;圖11是表示對(duì)象線程參照處理的流程圖;圖12是表示參照處理的流程圖;圖13是表示指令執(zhí)行處理的流程圖;圖14是表示對(duì)象鏈追蹤處理的流程圖;圖15是有關(guān)本發(fā)明實(shí)施方式2的GC系統(tǒng)的功能方框圖;圖16是表示線程信息及堆棧的圖;圖17是表示有關(guān)實(shí)施方式2的GC控制處理的流程圖;圖18是表示有關(guān)實(shí)施方式2的指令執(zhí)行處理的流程圖;圖19是表示現(xiàn)有的由Java執(zhí)行環(huán)境管理的Java對(duì)象、和與C語(yǔ)言程序中的數(shù)據(jù)的存儲(chǔ)配置的圖。具體實(shí)施例方式實(shí)施方式1下面使用圖示說(shuō)明有關(guān)本發(fā)明實(shí)施方式1的垃圾收集(GC)系統(tǒng)。1-1結(jié)構(gòu)圖1是有關(guān)本發(fā)明實(shí)施方式1的GC系統(tǒng)的功能方框圖。GC系統(tǒng)10是在具備CPU、存儲(chǔ)器等的計(jì)算機(jī)中,通過(guò)CPU執(zhí)行存儲(chǔ)在存儲(chǔ)器中的控制程序來(lái)實(shí)現(xiàn)的系統(tǒng),其包括進(jìn)行多線程控制的一般操作系統(tǒng)(OSOperatingSystem)及所謂的虛擬機(jī),并作為以Java語(yǔ)言等創(chuàng)建的應(yīng)用程序的執(zhí)行環(huán)境而被定位。GC系統(tǒng)10如圖1所示,具備解釋器100、對(duì)象管理部200、線程管理部300及GC部400。這里,解釋器100基本上是作為編譯器擔(dān)當(dāng)執(zhí)行AP的功能,具有指令執(zhí)行部110及對(duì)象參照檢測(cè)部120。對(duì)象管理部200,擔(dān)當(dāng)管理對(duì)象的功能,具有作為與來(lái)(from)表221、去(to)表222等對(duì)應(yīng)的存儲(chǔ)區(qū)域的對(duì)象管理信息存儲(chǔ)部210、對(duì)象生成部230、表切換部240。而且,來(lái)(from)表221是定位為存儲(chǔ)針對(duì)應(yīng)于GC開(kāi)始前存在的所有對(duì)象的對(duì)象指針的表,去(to)表222是為了存儲(chǔ)對(duì)應(yīng)于標(biāo)記和清除方式中的添加了標(biāo)記的對(duì)象的對(duì)象指針而利用的表。關(guān)于這些表,后面詳細(xì)說(shuō)明。線程管理部300實(shí)現(xiàn)多線程控制,并擔(dān)當(dāng)管理線程的功能,具有線程控制部310,和按每個(gè)AP線程的與線程320、對(duì)象參照信息330及堆棧340相對(duì)應(yīng)的存儲(chǔ)區(qū)域。而且,線程信息320包含GC標(biāo)志,該GC標(biāo)志為在GC處理全體的開(kāi)始時(shí)刻置于ON、在對(duì)于AP線程的參照處理一結(jié)束就置于OFF狀態(tài)。參照處理相當(dāng)于面向?qū)ο蟮臉?biāo)記賦予處理,是為了參照對(duì)象,把與存儲(chǔ)在堆棧內(nèi)等的對(duì)象指針內(nèi)容相同的對(duì)象指針從來(lái)(from)表移動(dòng)到去(to)表為主要內(nèi)容的處理。GC部400基本上相當(dāng)于所謂的垃圾收集器,具有GC控制部410、線程選擇條件存儲(chǔ)部420、參照處理部430及釋放部440。以這個(gè)GC部400為中心進(jìn)行的GC,基本上使用標(biāo)記和清除方式,是順序選擇成為參照處理對(duì)象的AP線程、停止選擇的AP線程、在進(jìn)行參照處理之后再解除其停止的方式。解釋器100中的指令執(zhí)行部110,逐次解釋并執(zhí)行構(gòu)成AP線程的指令串,并具有在指令是對(duì)象的生成指令的情況下使對(duì)象生成部230生成對(duì)象的功能。對(duì)象參照檢測(cè)部120具有如下功能,即,僅限于GC標(biāo)志是ON的情況,當(dāng)由指令執(zhí)行部110執(zhí)行的線程內(nèi)的指令是把對(duì)象的對(duì)象指針作為處理對(duì)象的指令時(shí),把這個(gè)對(duì)象指針存儲(chǔ)在對(duì)象參照信息330的存儲(chǔ)區(qū)中。對(duì)象管理部200中的對(duì)象生成部230,具有如下功能,即,參照所謂的類文件等對(duì)象的定義信息,對(duì)現(xiàn)有的OS的存儲(chǔ)管理機(jī)構(gòu),通過(guò)請(qǐng)求為對(duì)象分配所需要量的存儲(chǔ)區(qū)域,在存儲(chǔ)器內(nèi)生成對(duì)象。而且,GC系統(tǒng)10還包括利用存儲(chǔ)管理單元(MMU)把物理上的存儲(chǔ)器和邏輯地址空間對(duì)應(yīng)起來(lái),并管理存儲(chǔ)器的分配及釋放的現(xiàn)有的OS存儲(chǔ)管理機(jī)構(gòu),這個(gè)存儲(chǔ)管理機(jī)構(gòu)具有如下功能,即,如果被請(qǐng)求分配一定量的存儲(chǔ)區(qū),則在邏輯地址空間內(nèi)的未使用空間中,把被請(qǐng)求量的存儲(chǔ)區(qū)域作為分配的區(qū)域進(jìn)行管理,并返回該分配的存儲(chǔ)區(qū)域的開(kāi)頭地址。相應(yīng)地,對(duì)象生成部230通過(guò)存儲(chǔ)管理機(jī)構(gòu)分配對(duì)應(yīng)于對(duì)象的邏輯地址空間內(nèi)的區(qū)域,由此在存儲(chǔ)器內(nèi)生成對(duì)象。而且,在該邏輯地址空間中,除了由解釋器100執(zhí)行的、由Java語(yǔ)言等創(chuàng)建的AP中的對(duì)象之外,還配置了不通過(guò)解釋器100而在現(xiàn)有的一般的OS直接控制下執(zhí)行的程序數(shù)據(jù)、即、例如和由編譯器等已經(jīng)變?yōu)閳?zhí)行形式的程序有關(guān)的數(shù)據(jù)(下面稱作“本機(jī)(Native)數(shù)據(jù)”)。沒(méi)有通過(guò)解釋器100的可執(zhí)行形式的程序,為了配置本機(jī)(Native)數(shù)據(jù)通過(guò)現(xiàn)有的OS的存儲(chǔ)管理機(jī)構(gòu)分配存儲(chǔ)區(qū)域,在這里以和配置本機(jī)(Native)數(shù)據(jù)一樣的結(jié)構(gòu),分配關(guān)于由對(duì)象生成部230生成的對(duì)象的存儲(chǔ)區(qū)域。這樣的本機(jī)(Native)數(shù)據(jù)和與此相關(guān)的程序,和作為GC系統(tǒng)10特征的GC的動(dòng)作沒(méi)有直接關(guān)系,所以這里省去詳細(xì)說(shuō)明。而且,上述的AP線程指的是,作為通過(guò)解釋器100而執(zhí)行的AP的執(zhí)行單位的線程,也就是說(shuō)指的是除了作為有關(guān)本機(jī)(Native)數(shù)據(jù)的程序的執(zhí)行單位的線程以外的線程。而且,這里所說(shuō)的對(duì)象不包括本機(jī)(Native)數(shù)據(jù)。表切換部240具有產(chǎn)生如下效果的功能,即,通過(guò)交換用于指向來(lái)(from)表的指針和用于指向去(to)表的指針,產(chǎn)生等效于瞬間交換來(lái)(from)表的內(nèi)容和去(to)表的內(nèi)容的效果。線程管理部300中的線程控制部310進(jìn)行多線程控制,并行執(zhí)行包括組成AP的各AP線程及GC處理的線程在內(nèi)的各線程。也就是說(shuō),線程控制部310在每個(gè)微小時(shí)間內(nèi)切換各線程并執(zhí)行。而且,線程管理部300也并行執(zhí)行有關(guān)本機(jī)(Native)數(shù)據(jù)的程序的線程,但這個(gè)多線程控制的功能基本上是現(xiàn)有的OS等具有的功能,和作為GC系統(tǒng)10特征的GC的動(dòng)作沒(méi)有直接關(guān)系,所以,這里主要是只關(guān)注于AP線程及GC處理線程并進(jìn)行說(shuō)明。GC部400中的線程選擇條件存儲(chǔ)部420是存儲(chǔ)線程選擇條件的存儲(chǔ)區(qū),該線程選擇條件表示用于選擇成為進(jìn)行參照處理的對(duì)象的AP線程的條件。參照處理部430具有進(jìn)行參照處理的功能,釋放部440具有如下功能,即釋放沒(méi)有賦予標(biāo)記的對(duì)象,也就是說(shuō),釋放GC結(jié)束階段中殘存在來(lái)(from)表221中的對(duì)象指針?biāo)甘镜膶?duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。該存儲(chǔ)區(qū)域的釋放通過(guò)指定對(duì)象指針也就是說(shuō)指定對(duì)象的邏輯地址,并對(duì)利用了MMU的現(xiàn)有OS存儲(chǔ)管理機(jī)構(gòu)提出釋放請(qǐng)求來(lái)實(shí)現(xiàn)。而且,GC系統(tǒng)10中包含的現(xiàn)有OS存儲(chǔ)管理機(jī)構(gòu),針對(duì)指定了邏輯地址的釋放請(qǐng)求,把和這個(gè)邏輯地址對(duì)應(yīng)起來(lái)管理的分配區(qū)域,作為在需要重新分配存儲(chǔ)空間時(shí)可以進(jìn)行分配的未使用空間來(lái)管理。而且,GC控制部410具有執(zhí)行GC控制處理的功能。也就是說(shuō),GC控制部410通過(guò)參照線程選擇條件,選擇1個(gè)作為參照處理對(duì)象的AP線程,對(duì)于選擇了的AP線程,線程控制部310停止AP線程之后,使參照處理部430根據(jù)對(duì)應(yīng)這個(gè)AP線程的堆棧及對(duì)象參照信息進(jìn)行參照處理,之后,使線程控制部310解除選擇的AP線程的停止,然后進(jìn)行下一個(gè)AP線程的選擇,重復(fù)這些步驟一直到不存在未處理的AP線程,之后使釋放部440對(duì)沒(méi)有賦予標(biāo)記的對(duì)象進(jìn)行釋放。1-2數(shù)據(jù)下面,說(shuō)明關(guān)于GC系統(tǒng)10中所處理的數(shù)據(jù)。圖2是例示對(duì)象和對(duì)象指針之間的關(guān)系的圖。該圖中,對(duì)象指針用涂黑的小實(shí)心圓表示。指示對(duì)象、也就是說(shuō)指示配置在對(duì)應(yīng)存儲(chǔ)器500的邏輯地址空間上的對(duì)象所處位置的對(duì)象指針,可以存在于對(duì)象內(nèi)、堆棧內(nèi)、或者共享對(duì)象管理信息353內(nèi)。這里,共享對(duì)象管理信息353是包含針對(duì)作為AP執(zhí)行環(huán)境的虛擬機(jī)中為了需要而分配的對(duì)象群的對(duì)象指針群的數(shù)據(jù)。圖2的例子中,處在共享對(duì)象管理信息353內(nèi)的對(duì)象指針?biāo)甘镜氖菍?duì)象201c。而且,處在對(duì)應(yīng)AP線程351的堆棧內(nèi)的對(duì)象指針?biāo)甘镜氖菍?duì)象201a,也就是說(shuō)以對(duì)象201a的存儲(chǔ)地址為內(nèi)容,而且,其他的對(duì)象指針指示的是201d。因此,AP線程351在執(zhí)行中通過(guò)參照這些對(duì)象指針,處于可以訪問(wèn)對(duì)象201a、對(duì)象201d的狀態(tài)。而且,處在對(duì)應(yīng)AP線程352的堆棧內(nèi)的對(duì)象指針指示的是對(duì)象201b,作為對(duì)象201b內(nèi)的數(shù)據(jù),包含了指示對(duì)象201e的對(duì)象指針。因此,AP線程352通過(guò)追尋這些對(duì)象指針處于可以訪問(wèn)對(duì)象201e的狀態(tài)。另外,圖2中,除了表示對(duì)應(yīng)通過(guò)解釋器100執(zhí)行的以Java語(yǔ)言等創(chuàng)建的AP的對(duì)象201a~201e之外,還表示同樣通過(guò)OS存儲(chǔ)器管理機(jī)構(gòu)分配了區(qū)域的本機(jī)(Native)數(shù)據(jù)501a~501d混合存在于存儲(chǔ)器500之內(nèi)的情況。也就是說(shuō),總結(jié)起來(lái),對(duì)象201a~201e不是置于某種堆區(qū)(heaparea)中,而是和各本機(jī)(Native)數(shù)據(jù)一樣,通過(guò)OS存儲(chǔ)管理機(jī)構(gòu)分別單獨(dú)分配區(qū)域。而且,雖然圖2中沒(méi)有顯示,但線程信息320、堆棧340及對(duì)象參照信息330也是分配在存儲(chǔ)器500之內(nèi)的,而且,對(duì)象管理信息存儲(chǔ)部210相當(dāng)于存儲(chǔ)器500中的一部分。而且,通過(guò)解釋器100執(zhí)行的AP程序部分,和訪問(wèn)本機(jī)(Native)數(shù)據(jù)的程序部分,可以置于可讀寫的存儲(chǔ)器(RAM)中,也可置于只讀的存儲(chǔ)器(ROM)中。圖3是表示來(lái)(from)表及去(to)表的圖。存儲(chǔ)器500內(nèi)的對(duì)象管理信息存儲(chǔ)部210內(nèi),設(shè)有能存儲(chǔ)充足數(shù)量的對(duì)象指針或者空(null)值的2個(gè)表,另外,存在來(lái)(from)表指針211及去(to)表指針212。來(lái)(from)表指針211是指示2個(gè)表當(dāng)中的一方的指針,去(to)表指針212是指示另外一方的指針。這里,在當(dāng)前時(shí)刻來(lái)(from)表指針211所指示的表稱為來(lái)(from)表,去(to)表指針212所指示的表稱為去(to)表。來(lái)(from)表221在GC開(kāi)始時(shí)刻,存儲(chǔ)對(duì)應(yīng)于這個(gè)時(shí)刻存在的所有對(duì)象的所有對(duì)象指針。而且,去(to)表222是存儲(chǔ)在參照處理的過(guò)程中,從來(lái)(from)表221內(nèi)移動(dòng)出來(lái)的對(duì)象指針的表。而且,來(lái)(from)表221中的對(duì)象指針移動(dòng)到去(to)表222時(shí),存有這個(gè)對(duì)象指針的來(lái)(from)表221內(nèi)的位置相當(dāng)?shù)拇鎯?chǔ)內(nèi)容,置于空(null)值。圖4A及圖4B是表示參照處理引起的來(lái)(from)表及去(to)表的內(nèi)容變化的圖,圖4A表示參照處理開(kāi)始之前的狀態(tài),圖4B表示參照處理之后的狀態(tài)。圖4A中,參照處理開(kāi)始之前的來(lái)(from)表221x,包含分別指示對(duì)象objA202a、對(duì)象objB202b、對(duì)象objC202c的對(duì)象指針。而且,圖4A及圖4B中,也表示了各對(duì)象和本機(jī)(Native)數(shù)據(jù)混合存在于存儲(chǔ)器500內(nèi)的情況。之后,以AP線程354為對(duì)象進(jìn)行參照處理的情況下,和包含在AP線程354的堆棧內(nèi)的對(duì)象指針相同值的數(shù)據(jù),從來(lái)(from)表移動(dòng)到去(to)表,其結(jié)果就是圖4B表示的狀態(tài)。來(lái)(from)表221y中,指示objA202a的對(duì)象指針?biāo)嬖诘奈恢煤椭甘緊bjC202c的對(duì)象指針?biāo)嬖诘奈恢?,兩方都更新為空值,?to)表222y中,存有指示objA202a的對(duì)象指針和指示objC202c的對(duì)象指針。圖5是表示線程信息、堆棧及對(duì)象參照信息的圖。線程信息320按每個(gè)AP線程,在生成該線程時(shí)生成,其包括關(guān)于這個(gè)AP線程的信息,具體地說(shuō),包括狀態(tài)321、優(yōu)先度322、對(duì)象指針323、GC開(kāi)始時(shí)堆棧指針324、GC標(biāo)志325、對(duì)象參照信息開(kāi)頭指針326及對(duì)象參照信息當(dāng)前指針327。而且,AP線程生成時(shí),不僅分配線程信息320的存儲(chǔ)區(qū)域,也要分配堆棧340的存儲(chǔ)區(qū)域。線程信息320中的狀態(tài)321,是表示用于多線程控制的線程狀態(tài)的信息,分別表示等待(wait)狀態(tài)、執(zhí)行(run)狀態(tài)、準(zhǔn)備(ready)狀態(tài)等。優(yōu)先度322是表示線程優(yōu)先度的信息,優(yōu)先度例如在線程生成時(shí)受來(lái)自AP的指定而確定。而且,在多線程控制中,如果優(yōu)先度高的線程是準(zhǔn)備(ready)狀態(tài),則要比優(yōu)先度低于其的線程優(yōu)先置于執(zhí)行(run)狀態(tài)。堆棧指針323是表示關(guān)于該線程的堆棧內(nèi)的當(dāng)前有效數(shù)據(jù)范圍的終端的數(shù)據(jù)。而且,在多線程控制中,線程由執(zhí)行(run)狀態(tài)切換為其它狀態(tài)也就是停止?fàn)顟B(tài)時(shí),到此時(shí)為止保存在指示對(duì)象指針的預(yù)定寄存器內(nèi)的值,存儲(chǔ)在這個(gè)堆棧指針323中,當(dāng)線程切換為執(zhí)行(run)狀態(tài)時(shí),這個(gè)堆棧指針323內(nèi)的值設(shè)定在該預(yù)定寄存器上。GC開(kāi)始時(shí)堆棧指針324,表示GC開(kāi)始時(shí)的堆棧內(nèi)的有效數(shù)據(jù)范圍的終端。GC標(biāo)志325在GC處理整體的開(kāi)始時(shí)刻置于ON,在關(guān)于這個(gè)AP線程的參照處理結(jié)束之后置于OFF狀態(tài)。對(duì)象參照信息開(kāi)頭指針326表示對(duì)應(yīng)該AP線程的對(duì)象參照信息的存儲(chǔ)區(qū)的開(kāi)頭,在AP線程生成之際,在分配這個(gè)存儲(chǔ)區(qū)域時(shí)設(shè)定。另外,對(duì)象參照信息當(dāng)前指針327是表示對(duì)應(yīng)該AP線程的對(duì)象參照信息的存儲(chǔ)區(qū)中,對(duì)象參照檢測(cè)部120下面應(yīng)存儲(chǔ)對(duì)象指針的位置的信息,通過(guò)對(duì)象參照檢測(cè)部120參照并更新。圖6是表示參照處理和AP線程狀態(tài)之間關(guān)系的圖。GC線程356是執(zhí)行GC控制部410的GC的線程,作為GC把各AP線程依次作為對(duì)象進(jìn)行參照處理。這里例示的是按照AP線程355a、AP線程355b、AP線程355c的順序進(jìn)行參照處理的情況。AP線程355a是進(jìn)行參照處理之后的狀態(tài),處于執(zhí)行中。這里所謂的執(zhí)行中,指的是不是睡眠(sleep)狀態(tài)也就是說(shuō)不是停止?fàn)顟B(tài),在每個(gè)瞬間可以變化為執(zhí)行(run)狀態(tài)和準(zhǔn)備(ready)狀態(tài)。AP線程355b是參照處理正在進(jìn)行當(dāng)中的狀態(tài),處在停止?fàn)顟B(tài)。參照處理把AP線程強(qiáng)制置于停止?fàn)顟B(tài),參照堆棧及對(duì)象參照信息進(jìn)行。AP線程355c是參照處理還沒(méi)有進(jìn)行的狀態(tài),處于執(zhí)行中。圖7是表示線程選擇條件內(nèi)容的圖。線程選擇條件421是優(yōu)先哪個(gè)AP線程作為參照處理對(duì)象的一種判斷基準(zhǔn)的信息,由線程狀態(tài)422、線程優(yōu)先度423及堆棧尺寸424組成。線程狀態(tài)422是表示優(yōu)先哪個(gè)狀態(tài)的AP線程的信息,圖7的例子表示的是等待(wait)狀態(tài)的AP線程比執(zhí)行(run)狀態(tài)的AP線程要優(yōu)先。線程優(yōu)先度423是表示是以AP線程中確定的優(yōu)先度高的作為參照處理對(duì)象優(yōu)先選擇、還是優(yōu)先選擇優(yōu)先度低的信息,圖7的例子表示的是優(yōu)先選擇優(yōu)先度低的情況。而且,堆棧尺寸424是表示優(yōu)先選擇對(duì)應(yīng)AP線程的堆棧區(qū)的有效范圍尺寸大時(shí)的AP線程、還是優(yōu)先選擇尺寸小時(shí)的AP線程,圖7的例子表示的是優(yōu)先選擇堆棧區(qū)的有效范圍尺寸小的情況。1-3.動(dòng)作下面說(shuō)明GC系統(tǒng)10的工作。圖8是表示GC控制處理的流程圖。GC控制處理根據(jù)定時(shí)器以一定周期進(jìn)行。GC控制部410首先通過(guò)交換來(lái)(from)表指針211和去(to)表指針212的內(nèi)容,由此切換來(lái)(from)表和去(to)表之間的內(nèi)容(步驟S11)。據(jù)此,成為指示所有當(dāng)前沒(méi)有被釋放的對(duì)象的對(duì)象指針存儲(chǔ)在來(lái)(from)表的狀態(tài)。接下來(lái),GC控制部410使線程控制部310停止所有AP線程(步驟S12),把關(guān)于所有AP線程的線程信息中的GC標(biāo)志325置于ON狀態(tài),把當(dāng)前的堆棧指針設(shè)定為線程信息中的GC開(kāi)始時(shí)堆棧指針324(步驟S13),使線程控制部310解除所有AP線程的停止(步驟S14)。步驟S13中,進(jìn)一步,對(duì)每個(gè)AP線程,分配對(duì)象參照信息的存儲(chǔ)區(qū)域,把指示這個(gè)存儲(chǔ)區(qū)開(kāi)頭的指針設(shè)定為對(duì)象參照信息開(kāi)頭指針326及對(duì)象參照信息當(dāng)前指針327。而且,線程控制部310通過(guò)和現(xiàn)有OS多線程控制機(jī)構(gòu)相同的方式進(jìn)行線程的停止及停止解除。該線程的停止,是把線程置于停止?fàn)顟B(tài)也就是說(shuō)置于睡眠(sleep)狀態(tài)的控制,所謂線程的停止解除指的是解除睡眠(sleep)狀態(tài),返回準(zhǔn)備(ready)狀態(tài)的控制。接著步驟S14,GC控制部410進(jìn)行對(duì)于通過(guò)追尋共享對(duì)象管理信息353內(nèi)的對(duì)象指針而到達(dá)的對(duì)象賦予標(biāo)記的共享對(duì)象參照處理(步驟S15),并判斷是否存在GC未處理線程也就是說(shuō)判斷是否還存在作為參照處理對(duì)象沒(méi)有被選擇的AP線程(步驟S16)。關(guān)于共享對(duì)象參照處理,在后面敘述。在步驟S16中,如果是判斷為存在GC未處理線程的情況,則GC控制部410進(jìn)行用于確定成為參照處理對(duì)象的AP線程的對(duì)象線程確定處理(步驟S17),使線程控制部310停止其確定的AP線程(步驟S18),執(zhí)行以與這個(gè)確定的AP線程有關(guān)的參照處理為內(nèi)容的對(duì)象線程參照處理(步驟S19),把這個(gè)確定的AP線程的GC標(biāo)志325置于OFF狀態(tài)(步驟S20),使線程控制部310解除這個(gè)確定了的AP線程的停止?fàn)顟B(tài)(步驟S21),再次返回步驟S16的判斷中。而且,關(guān)于對(duì)象線程確定處理及對(duì)象線程參照處理,后面敘述。另外,緊接著步驟S20之后,GC控制部410釋放對(duì)應(yīng)對(duì)象AP線程的對(duì)象參照信息的存儲(chǔ)區(qū)域。另外,在步驟S16中,如果是判斷為不存在GC未處理線程的情況,則GC控制部410使釋放部440釋放沒(méi)有賦予標(biāo)記的對(duì)象(步驟S22),結(jié)束GC控制處理。步驟S22中,釋放部440通過(guò)參照處理釋放去(to)表上對(duì)象指針沒(méi)有移動(dòng)的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域,也就是說(shuō)釋放殘存在來(lái)(from)表上的對(duì)象指針?biāo)甘镜膶?duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。這個(gè)釋放意味著,對(duì)象生成部230通過(guò)基于利用了MMU的OS存儲(chǔ)管理機(jī)構(gòu)而進(jìn)行的分配,來(lái)應(yīng)對(duì)為了生成對(duì)象而分配給對(duì)象的存儲(chǔ)區(qū)域,并釋放這個(gè)被分配的存儲(chǔ)區(qū)域。而且,這些釋放的存儲(chǔ)區(qū)域可以通過(guò)存儲(chǔ)管理機(jī)構(gòu)重新作為對(duì)象和本機(jī)(Native)數(shù)據(jù)的存儲(chǔ)區(qū)進(jìn)行分配。圖9是表示對(duì)象線程確定處理的流程圖。GC控制部410參照線程選擇條件存儲(chǔ)部420內(nèi)的線程選擇條件421,進(jìn)行對(duì)象線程確定處理。首先,GC控制部410參照對(duì)應(yīng)各AP線程的線程信息,檢索狀態(tài)321處于等待(wait)狀態(tài)的AP線程(步驟S31)。判斷這個(gè)檢索結(jié)果的線程數(shù)目(步驟S32),如果是1,則把這個(gè)檢索結(jié)果的AP線程確定為參照處理的對(duì)象線程(步驟S37),結(jié)束對(duì)象線程確定處理。另外,在步驟S32中,如果檢索結(jié)果的線程數(shù)目是0,則GC控制部410檢索線程優(yōu)先度322最低的AP線程(步驟S33),判斷檢索結(jié)果線程數(shù)目是否是1(步驟S35)。另外,步驟S32中,如果檢索結(jié)果線程數(shù)目是2以上,則為了從檢索結(jié)果AP線程中進(jìn)一步縮小檢索結(jié)果,檢索線程優(yōu)先度322最低的AP線程(步驟S34),判斷檢索結(jié)果的線程數(shù)目是否是1(步驟S35)。在步驟S35中,如果是線程數(shù)目判斷為1的情況,則GC控制部410把這個(gè)檢索結(jié)果的AP線程確定為參照處理的對(duì)象線程(步驟S37),結(jié)束對(duì)象線程確定處理。而且,在步驟S35中,如果檢索結(jié)果線程數(shù)目判斷為不是1的情況,也就是說(shuō),存在多個(gè)優(yōu)先度最低的AP線程的情況,則GC控制部410從檢索結(jié)果的AP線程中檢索堆棧尺寸最小的AP線程(步驟S36),把堆棧尺寸最小的AP線程確定為參照處理的對(duì)象線程(步驟S37),結(jié)束對(duì)象線程確定處理。圖10是表示共享對(duì)象參照處理的流程圖。GC控制部410關(guān)注包含對(duì)象指針群的共享對(duì)象管理信息353的開(kāi)頭對(duì)象指針(步驟S41),使參照處理部430進(jìn)行參照處理(步驟S42),由此,在作為AP執(zhí)行環(huán)境的虛擬機(jī)中,對(duì)因需要而分配的所有對(duì)象群進(jìn)行標(biāo)記賦予。圖11是表示對(duì)象線程參照處理的流程圖。GC控制部410關(guān)注對(duì)應(yīng)于對(duì)象線程的線程信息中的GC開(kāi)始時(shí)堆棧指針324所指示的位置(步驟S51),使參照處理部430進(jìn)行參照處理(步驟S52),由此對(duì)可以由堆棧區(qū)內(nèi)的對(duì)象指針追尋的所有對(duì)象進(jìn)行標(biāo)記賦予。而且,由于GC控制處理(參照?qǐng)D8)的開(kāi)始時(shí)刻和開(kāi)始這個(gè)對(duì)象線程參照處理的時(shí)刻不同,因此,GC開(kāi)始時(shí)堆棧指針324所指示的位置和隨后的各位置的內(nèi)容,與GC開(kāi)始時(shí)刻有所不同,依據(jù)后續(xù)的步驟S53及步驟S54,在GC開(kāi)始以后,由于對(duì)可以由因?qū)ο缶€程的動(dòng)作而變化的對(duì)象指針追尋的所有對(duì)象進(jìn)行標(biāo)記賦予,所以雖然會(huì)有標(biāo)記賦予過(guò)度的情況,但不顧被參照的情況而漏掉標(biāo)記賦予的事態(tài)是不會(huì)發(fā)生的。接下來(lái),GC控制部410關(guān)注(focuson)對(duì)象參照信息開(kāi)頭指針326的指示位置(步驟S53),使參照處理部430進(jìn)行參照處理(步驟S54),結(jié)束對(duì)象線程參照處理。圖12是表示參照處理的流程圖。參照處理部430從所關(guān)注的存儲(chǔ)位置,檢索對(duì)象指針(步驟S61),判斷是否檢測(cè)出了對(duì)象指針(步驟S62),如果是檢測(cè)到了的情況,則判斷和這個(gè)檢測(cè)出的對(duì)象指針相同值的對(duì)象指針是否在來(lái)(from)表中存在于(步驟S64),如果存在于來(lái)(from)表中,則從來(lái)(from)表向去(to)表復(fù)制這個(gè)對(duì)象指針,在來(lái)(from)表內(nèi)的這個(gè)對(duì)象指針存在的位置上記錄空(null)值(步驟S66),關(guān)注這個(gè)對(duì)象指針?biāo)甘镜膶?duì)象數(shù)據(jù)開(kāi)頭(步驟S67),再次返回步驟S61。另外,在步驟S64中,如果是判斷為來(lái)(from)表上不存在這個(gè)對(duì)象指針的情況,則由于已經(jīng)從來(lái)(from)表移動(dòng)到了去(to)表,所以參照處理部430關(guān)注正在關(guān)注的位置的下一個(gè)位置(步驟S65),再次返回步驟S61。通過(guò)步驟S65及步驟S61的組合,實(shí)現(xiàn)了相繼檢索共享對(duì)象管理信息353內(nèi)的對(duì)象指針、相繼檢索堆棧內(nèi)的對(duì)象指針、相繼檢索對(duì)象參照信息內(nèi)的對(duì)象指針、和相繼檢索作為某對(duì)象內(nèi)的數(shù)據(jù)成員(datamember)的對(duì)象指針等。而且,步驟S62中,如果是判斷為不能檢測(cè)到對(duì)象指針的情況,則參照處理部430判斷關(guān)注位置是否是對(duì)象內(nèi)(步驟S63)。而且,不能檢測(cè)出對(duì)象指針指的是如果關(guān)注位置處于共享對(duì)象管理信息353內(nèi)則是在這個(gè)共享對(duì)象管理信息353內(nèi)不能檢測(cè)到對(duì)象指針;如果關(guān)注位置處于堆棧內(nèi)則是在堆棧內(nèi)不能檢測(cè)到對(duì)象指針;如果關(guān)注位置處于對(duì)象參照信息內(nèi)則是在這個(gè)對(duì)象參照信息內(nèi)不能檢測(cè)到對(duì)象指針;如果關(guān)注位置處于對(duì)象內(nèi)則是在這個(gè)對(duì)象內(nèi)不能檢測(cè)到對(duì)象指針。步驟S63中,如果是判斷為關(guān)注位置處于對(duì)象內(nèi)的情況,則參照處理部430著眼于關(guān)注這個(gè)對(duì)象內(nèi)之前的關(guān)注位置的下一位置(步驟S68),再次返回步驟S61。通過(guò)這個(gè)步驟S68,參照處理部430將關(guān)注由步驟S67關(guān)注對(duì)象內(nèi)之前所關(guān)注的對(duì)象指針的下一位置。而且,在步驟S63中,如果是判斷為關(guān)注位置不是處于對(duì)象內(nèi)的情況,則參照處理部430結(jié)束參照處理。圖13是表示指令執(zhí)行處理的流程圖。解釋器100中的指令執(zhí)行部110進(jìn)行依次解釋置于執(zhí)行(run)狀態(tài)的AP線程的程序中的指令記述并執(zhí)行的指令執(zhí)行處理。首先,指令執(zhí)行部110解釋并執(zhí)行AP線程當(dāng)前執(zhí)行位置中的指令(步驟S71),對(duì)象參照檢測(cè)部120判斷對(duì)應(yīng)這個(gè)AP線程的線程信息中的GC標(biāo)志325是否是ON(步驟S72),如果不是ON,則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。步驟S72中,如果是判斷為GC標(biāo)志325是ON的情況,則對(duì)象參照檢測(cè)部120判斷步驟S71中由指令執(zhí)行部110執(zhí)行的指令是否是把對(duì)象指針作為處理對(duì)象的指令(步驟S73),如果不是把對(duì)象指針作為處理對(duì)象的指令,則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟71)。而且,把對(duì)象指針作為處理對(duì)象的指令,是把堆棧內(nèi)的對(duì)象指針復(fù)制到對(duì)象內(nèi)的運(yùn)算作為指示內(nèi)容的指令,或是把對(duì)象內(nèi)的對(duì)象指針復(fù)制到其他對(duì)象內(nèi)的運(yùn)算作為指示內(nèi)容的指令。步驟S73中,如果判斷為是把對(duì)象指針作為處理對(duì)象的指令的情況,則對(duì)象參照檢測(cè)部120判斷和這個(gè)對(duì)象指針相同值的數(shù)據(jù)是否已經(jīng)在對(duì)象參照信息區(qū)里存儲(chǔ)完畢(步驟S74),如果是存儲(chǔ)完畢的情況,則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。步驟S74中,如果是和這個(gè)對(duì)象指針相同值的數(shù)據(jù)沒(méi)有在對(duì)象參照信息存儲(chǔ)區(qū)存儲(chǔ)完畢的情況,則對(duì)象檢測(cè)部120把這個(gè)對(duì)象指針存儲(chǔ)在對(duì)象參照信息當(dāng)前指針327所指示的對(duì)象參照信息中的位置上(步驟S75),關(guān)注這個(gè)對(duì)象指針?biāo)甘镜膶?duì)象,進(jìn)行對(duì)象鏈追蹤處理(步驟S76),之后,指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。而且,步驟S71中的作為執(zhí)行對(duì)象的指令如果是生成對(duì)象的指令的情況,則指令執(zhí)行部110指示對(duì)象生成部230生成對(duì)象,接受該指示的對(duì)象生成部230生成對(duì)象,并且,把指示這個(gè)對(duì)象的對(duì)象指針?lè)祷亟oAP線程,把這個(gè)對(duì)象指針的拷貝設(shè)定在去(to)表內(nèi)。圖14是表示對(duì)象鏈追蹤處理的流程圖。對(duì)象參照檢測(cè)部120判斷正在關(guān)注的對(duì)象中是否存在未關(guān)注的對(duì)象指針(步驟S81),如果存在,則關(guān)注這個(gè)未關(guān)注的1個(gè)對(duì)象指針(步驟S82),把這個(gè)關(guān)注的對(duì)象指針存儲(chǔ)在對(duì)象參照信息存儲(chǔ)區(qū)上(步驟S83),著眼于這個(gè)關(guān)注的對(duì)象指針?biāo)甘镜膶?duì)象并進(jìn)一步進(jìn)行對(duì)象鏈處理(步驟S81~84)(步驟S84)。而且,在將對(duì)象指針存儲(chǔ)在對(duì)象參照信息存儲(chǔ)區(qū)內(nèi)時(shí),對(duì)象參照檢測(cè)部120將對(duì)象參照信息當(dāng)前指針恰好推進(jìn)這個(gè)對(duì)象指針的尺寸的量。另外,步驟S81中,如果判斷為正在關(guān)注的對(duì)象中不存在未關(guān)注的對(duì)象指針時(shí),則對(duì)象參照檢測(cè)部120結(jié)束對(duì)象鏈追蹤處理。因此,由這個(gè)指令執(zhí)行處理及對(duì)象鏈追蹤處理,GC標(biāo)志325是ON狀態(tài)的情況下,對(duì)象指針被作為處理對(duì)象時(shí),可以從這個(gè)對(duì)象指針追尋的對(duì)象指針的任何一個(gè)都將被存在對(duì)象參照信息的存儲(chǔ)區(qū)上。而且,根據(jù)以依據(jù)AP線程的對(duì)象指針作為處理對(duì)象的運(yùn)算的執(zhí)行,在成為不能從這個(gè)AP線程訪問(wèn)以這個(gè)對(duì)象指針?biāo)甘镜膶?duì)象的狀態(tài)的情況下,也就是說(shuō),通過(guò)AP線程的動(dòng)作,(a)對(duì)象指針被清除的情況下,(b)對(duì)象指針被更新為其它內(nèi)容的情況下,或者(c)對(duì)象指針存在于堆棧區(qū)的有效范圍內(nèi)時(shí)、對(duì)象指針被變更而處于堆棧有效范圍之外,基本上不能從AP線程進(jìn)行訪問(wèn)的情況下,如果由這個(gè)AP線程,這個(gè)對(duì)象指針事先復(fù)制到從其它AP線程可以訪問(wèn)的地點(diǎn),則需要向這個(gè)對(duì)象指針?biāo)甘镜膶?duì)象進(jìn)行標(biāo)記賦予,為此,進(jìn)行上述的步驟S72~S76、步驟S81~S84的處理。實(shí)施方式2下面,使用圖示,說(shuō)明本發(fā)明實(shí)施方式2的GC系統(tǒng)。有關(guān)實(shí)施方式2的GC系統(tǒng),在依次停止AP線程而進(jìn)行參照處理這一點(diǎn)上,基本上和實(shí)施方式1的GC系統(tǒng)10相同。只是,有關(guān)實(shí)施方式2的GC系統(tǒng),主要在以下幾點(diǎn)和GC系統(tǒng)10不同,即不是對(duì)于每個(gè)AP線程都具有對(duì)象參照信息和GC標(biāo)志,而是以系統(tǒng)整體綜合起來(lái)具有對(duì)象參照信息和GC標(biāo)志,以及把線程信息的內(nèi)容縮小到多線程控制所需要的程度。圖15是本發(fā)明實(shí)施方式2的GC系統(tǒng)的功能方框圖。圖15所示的GC系統(tǒng)20的組成要素中,對(duì)于和實(shí)施方式1中所示的GC系統(tǒng)10相同的組成要素,標(biāo)以和圖1一樣的標(biāo)號(hào),在這里以GC系統(tǒng)20特有的特征為中心進(jìn)行說(shuō)明。而且,對(duì)于沒(méi)有進(jìn)行特別說(shuō)明的點(diǎn),GC系統(tǒng)20和GC系統(tǒng)10一樣。GC系統(tǒng)20如圖15所示,具備解釋器1100、對(duì)象管理部200、線程管理部1300及GC部1400。這里,解釋器1100基本上是解釋器,擔(dān)當(dāng)執(zhí)行AP的功能,具備指令執(zhí)行部110及對(duì)象參照檢測(cè)部1120。線程管理部1300進(jìn)行多線程控制,并擔(dān)當(dāng)管理線程的功能,具備線程控制部310和按每個(gè)AP線程對(duì)應(yīng)于線程信息1320及堆棧340的存儲(chǔ)區(qū)域。而且,線程信息1320如圖16所示,包括狀態(tài)321、優(yōu)先度322及對(duì)象指針323。GC部1400基本上相當(dāng)于所謂的垃圾收集器,具備GC控制部1410、線程選擇條件存儲(chǔ)部420、參照處理部1430、釋放部440和對(duì)應(yīng)對(duì)象參照信息1450及GC標(biāo)志1460的存儲(chǔ)區(qū)。解釋器1100中的對(duì)象參照檢測(cè)部120,具有如下功能,即,限于GC標(biāo)志1460是ON狀態(tài)的情況,由指令執(zhí)行部110執(zhí)行的AP線程內(nèi)的指令,如果是把對(duì)象的對(duì)象指針作為處理對(duì)象的指令時(shí),則把這個(gè)對(duì)象指針存儲(chǔ)在對(duì)象參照信息1450的存儲(chǔ)區(qū)中。以GC部1400為中心進(jìn)行的GC是,基本上使用標(biāo)記和清除方式,依次選擇成為參照處理對(duì)象的AP線程,并停止所選擇的AP線程,進(jìn)行參照處理之后再解除該停止的方式。GC部1400中的參照處理部1430,具有參照堆棧及對(duì)象參照信息1450來(lái)進(jìn)行參照處理的功能。對(duì)象參照信息1450是和GC系統(tǒng)10中的對(duì)象參照信息一樣以對(duì)象指針為內(nèi)容的信息,但是其并不是每一個(gè)AP線程都存在。這個(gè)對(duì)象參照信息1450的存儲(chǔ)區(qū)上,在因?yàn)橛嘘P(guān)整個(gè)AP線程的對(duì)象參照信息檢測(cè)部1120對(duì)象指針作為指令的處理對(duì)象時(shí),存儲(chǔ)這個(gè)對(duì)象指針。而且,線程信息1320、堆棧340、對(duì)象參照信息1450、GC標(biāo)志1460,和對(duì)象以及本機(jī)(Native)數(shù)據(jù)一樣,存儲(chǔ)在包含對(duì)象管理信息存儲(chǔ)部210的存儲(chǔ)區(qū)上。另外,GC控制部1410具有執(zhí)行圖17所示的GC控制處理的功能。圖17是表示實(shí)施方式2中的GC控制處理的流程圖。而且,在這個(gè)流程中的處理步驟中,對(duì)于和實(shí)施方式1的GC控制處理相同的部分,標(biāo)以和圖8一樣的標(biāo)號(hào)來(lái)表示。這個(gè)GC控制處理,根據(jù)定時(shí)器以一定周期進(jìn)行。GC控制部1410首先交換來(lái)(from)表指針211和去(to)表指針212的內(nèi)容,由此切換來(lái)(from)表和去(to)表之間的內(nèi)容(步驟S11),把GC標(biāo)志1460置于ON狀態(tài)(步驟S111)。在步驟S111之后,GC控制部1410進(jìn)行用于對(duì)通過(guò)追尋共享對(duì)象管理信息353內(nèi)的對(duì)象指針而到達(dá)的對(duì)象賦予標(biāo)記的共享對(duì)象參照處理(步驟S15),判斷是否存在作為GC未處理線程、也就是說(shuō)是否還存在作為參照處理對(duì)象沒(méi)有被選擇的AP線程(步驟S16)。步驟S16中,如果是判斷為存在GC未處理線程的情況,則GC控制部1410進(jìn)行用于確定成為參照處理對(duì)象的AP線程的對(duì)象線程確定處理(步驟S17),使線程控制部310停止該確定的AP線程(步驟S18),關(guān)注對(duì)應(yīng)這個(gè)確定的AP線程的堆棧指針的位置(步驟S112),使參照處理部1430執(zhí)行參照處理(參照?qǐng)D12)(步驟S113),使線程控制部310解除這個(gè)確定的AP線程的停止(步驟S21),再次返回步驟S16的判斷。另外,步驟S16中,如果是判斷為不存在GC未處理線程的情況,則GC控制部1410使線程控制部310停止所有AP線程(步驟S114),關(guān)注對(duì)象參照信息1450的存儲(chǔ)區(qū)的開(kāi)頭位置(步驟S115),使參照處理部1430執(zhí)行參照處理(步驟S116),把GC標(biāo)志1460置于OFF狀態(tài)(步驟S117),使線程控制部310解除所有AP線程的停止(步驟S118),使釋放部440釋放沒(méi)有賦予標(biāo)記的對(duì)象(步驟S22),結(jié)束GC控制處理。這里,簡(jiǎn)單說(shuō)明由解釋器1100進(jìn)行的指令執(zhí)行處理。圖18是表示實(shí)施方式2的指令執(zhí)行處理的流程圖。如該圖所示,這個(gè)指令執(zhí)行處理,基本上相當(dāng)于從圖13所示的指令執(zhí)行處理去掉了步驟S76的處理。首先,指令執(zhí)行部110解釋并執(zhí)行AP線程當(dāng)前執(zhí)行位置中的指令(步驟S71),對(duì)象參照檢測(cè)部1120判斷GC標(biāo)志1460是否是ON狀態(tài)(步驟S72),如果不是ON狀態(tài),則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。步驟S72中,如果判斷為GC標(biāo)志325是ON狀態(tài)的情況,則對(duì)象參照檢測(cè)部1120判斷步驟S71中由指令執(zhí)行部110執(zhí)行的指令是否是把對(duì)象指針作為處理對(duì)象的指令(步驟S73),如果不是把對(duì)象指針作為處理對(duì)象的指令,則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。步驟S73中,如果判斷為是把對(duì)象指針作為處理對(duì)象的指令的情況,則對(duì)象參照檢測(cè)部1120判斷和這個(gè)對(duì)象指針相同的值的數(shù)據(jù)是否已經(jīng)在對(duì)象參照信息區(qū)內(nèi)存儲(chǔ)完畢(步驟S74),如果是存儲(chǔ)完畢的情況,則指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。步驟S74中,如果是和這個(gè)對(duì)象指針相同值的數(shù)據(jù)還沒(méi)有在對(duì)象參照信息的存儲(chǔ)區(qū)內(nèi)存儲(chǔ)完畢的情況,則對(duì)象參照檢測(cè)部1120把這個(gè)對(duì)象指針存儲(chǔ)在對(duì)象參照信息中的位置處(步驟S75),之后指令執(zhí)行部110進(jìn)行下一指令的解釋執(zhí)行(步驟S71)。這樣,GC控制部1410通過(guò)參照線程選擇條件,選擇1個(gè)成為參照處理對(duì)象的AP線程,對(duì)于選擇的AP線程,使線程控制部310停止這個(gè)AP線程,之后再使參照處理部1430根據(jù)對(duì)應(yīng)這個(gè)AP線程的堆棧進(jìn)行參照處理,之后使線程控制部310解除所選擇的AP線程的停止,之后進(jìn)行下一AP線程的選擇,反復(fù)操作上述步驟直到不再存在未處理的AP線程,之后,使線程控制部310停止所有AP線程,使參照處理部1430根據(jù)對(duì)象參照信息進(jìn)行參照處理,使線程控制部310解除所有AP線程的停止,使釋放部440對(duì)沒(méi)有賦予標(biāo)記的對(duì)象進(jìn)行釋放。3.考察下面,對(duì)于上述本發(fā)明的GC系統(tǒng)所管理的對(duì)象、和現(xiàn)有的Java執(zhí)行環(huán)境中的垃圾收集器等處理的對(duì)象(下面特別稱為“Java對(duì)象”)的存儲(chǔ)區(qū)域的差異,簡(jiǎn)單進(jìn)行對(duì)比說(shuō)明。有關(guān)上述實(shí)施方式1、2所示的本發(fā)明GC系統(tǒng)中,執(zhí)行意識(shí)不到分配給程序的存儲(chǔ)空間的釋放的以Java語(yǔ)言等面向?qū)ο蟮恼Z(yǔ)言創(chuàng)建的AP之際生成對(duì)象時(shí)的存儲(chǔ)空間的分配,和GC處理中對(duì)應(yīng)這個(gè)對(duì)象的存儲(chǔ)空間的釋放,是通過(guò)使用了MMU的現(xiàn)有OS存儲(chǔ)管理機(jī)構(gòu)進(jìn)行的。由此,針對(duì)對(duì)象所分配的存儲(chǔ)區(qū)域,和本機(jī)(Native)數(shù)據(jù)、也就是說(shuō)對(duì)由其它語(yǔ)言例如C語(yǔ)言等創(chuàng)建的程序的數(shù)據(jù)所分配的存儲(chǔ)區(qū)域,在邏輯地址空間中是混合存在的。圖3中表示了這種混合存在的樣子。與此相對(duì),由現(xiàn)有的Java執(zhí)行環(huán)境所管理的Java對(duì)象、和這里C語(yǔ)言程序中的數(shù)據(jù)(下面稱作“C數(shù)據(jù)”)的在存儲(chǔ)器中的存在狀態(tài),用圖來(lái)表示的就是圖19。如圖19所示,各C語(yǔ)言程序953、954通過(guò)OS存儲(chǔ)管理機(jī)構(gòu)將用于C數(shù)據(jù)921、922的存儲(chǔ)區(qū)域分配在隨機(jī)存儲(chǔ)器(RAM)900之內(nèi)。而且,由各Java程序951、952生成的各Java對(duì)象911~913,被分配在1個(gè)堆區(qū)910內(nèi),其在堆區(qū)910內(nèi)的配置管理,不是通過(guò)OS,而是通過(guò)包含垃圾收集器950的Java執(zhí)行環(huán)境來(lái)進(jìn)行的。為此,Java執(zhí)行環(huán)境首先通過(guò)OS存儲(chǔ)管理機(jī)制分配好堆區(qū),并在生成對(duì)象之際,把這個(gè)堆區(qū)內(nèi)的一區(qū)域分配給這個(gè)對(duì)象。這個(gè)堆區(qū)會(huì)減少其它語(yǔ)言程序可利用的存儲(chǔ)空間量。而且,Java執(zhí)行環(huán)境釋放對(duì)象時(shí),把堆區(qū)內(nèi)分配給這個(gè)對(duì)象的區(qū)域,作為重新分配給對(duì)象的未使用空間來(lái)管理,但是在堆區(qū)中,有必要隨時(shí)進(jìn)行使片斷化的所有未使用空間連續(xù)起來(lái)的所謂存儲(chǔ)壓縮處理。這一點(diǎn),在實(shí)施方式1、2中所示的有關(guān)本發(fā)明的GC系統(tǒng)中,并不是進(jìn)行堆區(qū)的分配以及其內(nèi)部的管理,而是,把針對(duì)對(duì)象的存儲(chǔ)空間分配直接地通過(guò)利用了MMU的現(xiàn)有OS存儲(chǔ)管理機(jī)構(gòu)來(lái)進(jìn)行,因此理所當(dāng)然的不需要堆區(qū)內(nèi)的存儲(chǔ)壓縮等。4.補(bǔ)充上面,關(guān)于本發(fā)明GC系統(tǒng),基于實(shí)施方式1、2進(jìn)行了說(shuō)明,但本發(fā)明當(dāng)然并不限定于此。下面,說(shuō)明實(shí)施方式的變形。(1)線程選擇條件按照線程狀態(tài)、線程優(yōu)先度、堆棧尺寸這3個(gè)條件的這個(gè)順序優(yōu)先適用,然而條件數(shù)和適用順序等并不限于此,而且,例如把線程優(yōu)先度高的作為條件或者堆棧尺寸大的作為條件也可以。只是,如實(shí)施方式中所顯示的,選擇線程狀態(tài)是等待(wait)狀態(tài)的AP線程為參照處理對(duì)象,能達(dá)到對(duì)當(dāng)前動(dòng)作的AP的惡劣影響比較少的效果。而且,由參照處理(圖12)的算法,對(duì)某AP線程的參照處理所花費(fèi)的時(shí)間,與先進(jìn)行參照處理的AP線程相比,后進(jìn)行的AP線程所花費(fèi)時(shí)間要短,因此,如實(shí)施方式中所示,把線程優(yōu)先度低的先選擇為參照處理對(duì)象,由此可以產(chǎn)生縮短需要即時(shí)響應(yīng)性的線程優(yōu)先度高的AP線程的停止時(shí)間的效果。而且,因?yàn)橥瑯永碛梢约岸褩3叽缭酱髤⒄仗幚碓叫枰ㄙM(fèi)時(shí)間的理由,從對(duì)應(yīng)的堆棧尺寸小的AP線程起,按照順序進(jìn)行參照處理,由此產(chǎn)生如下效果,可以將AP線程的停止時(shí)間分散為與相同線程優(yōu)先度的AP線程間的程度相等。(2)在實(shí)施方式中,GC控制處理根據(jù)定時(shí)器以一定周期進(jìn)行,但并不限定于此,在分配給AP的空的存儲(chǔ)量比預(yù)定量少的情況下進(jìn)行GC控制處理也是可以的。(3)實(shí)施方式中所示的對(duì)象參照信息的存儲(chǔ)區(qū),也可以是以連續(xù)的物理地址表示的存儲(chǔ)區(qū),并且,也可以這樣處理,即,每當(dāng)在存儲(chǔ)對(duì)象指針之際產(chǎn)生需要時(shí),追加分配一定量的存儲(chǔ)區(qū)域,這個(gè)分配的多個(gè)不連貫的存儲(chǔ)區(qū)域在邏輯地址上連續(xù)。(4)在實(shí)施方式1所示的GC系統(tǒng)中,在依據(jù)解釋器的指令執(zhí)行處理中,如果GC標(biāo)志是ON狀態(tài),則把對(duì)象指針作為處理對(duì)象時(shí),進(jìn)行在對(duì)象參照信息的存儲(chǔ)區(qū)中保存這個(gè)對(duì)象指針的處理,在指令執(zhí)行處理中,不進(jìn)行內(nèi)容為將和這個(gè)對(duì)象指針相同值的數(shù)據(jù)從來(lái)(from)表移動(dòng)到去(to)表的參照處理,保持了依據(jù)解釋器的指令執(zhí)行的高速性,然而也可以在指令執(zhí)行處理中進(jìn)行這個(gè)參照處理。(5)在實(shí)施方式中,從共享對(duì)象管理信息內(nèi)的對(duì)象指針可以追尋的面向?qū)ο蟮闹羔槪ㄟ^(guò)參照處理從來(lái)(from)表移動(dòng)到去(to)表,但是即使不進(jìn)行參照處理,只要由共享對(duì)象管理信息管理的對(duì)象,從釋放部的釋放對(duì)象中去掉即可。(6)實(shí)施方式中所示的GC系統(tǒng),不僅僅是裝載在計(jì)算機(jī)上,也可以裝載在具備CPU的便攜式終端、家電設(shè)備等中。(7)實(shí)施方式中所示的線程控制部,在每一微小時(shí)間內(nèi)切換各線程并執(zhí)行,由此并行執(zhí)行各線程,也就是說(shuō),是偽并行執(zhí)行,但是也可以通過(guò)多線程控制中的多個(gè)處理器元件,實(shí)際地并行執(zhí)行。(8)在實(shí)施方式中,由對(duì)象生成部生成的各對(duì)象通過(guò)現(xiàn)有的OS存儲(chǔ)管理機(jī)構(gòu),和各本機(jī)(Native)數(shù)據(jù)等同地,在邏輯地址空間中被分配以存儲(chǔ)空間,然而,各對(duì)象在邏輯地址空間中的一塊堆區(qū)內(nèi),進(jìn)行特別管理以便分別分配存儲(chǔ)空間也可以。該特別的管理通過(guò)利用現(xiàn)有的OS存儲(chǔ)管理機(jī)制分配堆區(qū),對(duì)應(yīng)對(duì)象的生成把其內(nèi)部的未分配區(qū)域分配給各對(duì)象,對(duì)應(yīng)對(duì)象的釋放把其內(nèi)部的區(qū)域定為未分配區(qū)域來(lái)實(shí)現(xiàn)。在進(jìn)行這個(gè)特別管理時(shí),需要隨時(shí)進(jìn)行用于使這個(gè)堆區(qū)內(nèi)中片斷化的所有未分配區(qū)域倆許諾許的所謂存儲(chǔ)壓縮處理。而且,由此,利用堆區(qū)的方式如上述的3.考察所示,不一定是最合適的方式。(9)實(shí)施方式中所示的GC系統(tǒng)包含了現(xiàn)有的OS存儲(chǔ)管理機(jī)構(gòu),但是在GC系統(tǒng)外部,作為這個(gè)GC系統(tǒng)的基本環(huán)境,假設(shè)存在使用MMU的管理存儲(chǔ)器的現(xiàn)有OS存儲(chǔ)管理機(jī)構(gòu),并且GC系統(tǒng)通過(guò)這個(gè)外部的存儲(chǔ)管理機(jī)構(gòu)進(jìn)行存儲(chǔ)器的分配及釋放也是可以的。(10)使CPU執(zhí)行用于實(shí)現(xiàn)實(shí)施方式中所示的GC系統(tǒng)的各種功能的各種處理(參照?qǐng)D8~圖14,圖17、圖18)的程序,也可以記錄在記錄媒體上或者通過(guò)各種通信通路等流通發(fā)布。這樣的記錄媒體有IC卡、光盤、軟盤、ROM等。流通發(fā)布的程序,可以通過(guò)存儲(chǔ)在具備CPU的裝置中CPU可以讀取的存儲(chǔ)器上供使用,并由這個(gè)CPU執(zhí)行這個(gè)程序來(lái)實(shí)現(xiàn)實(shí)施方式中所示的GC系統(tǒng)的各種功能。產(chǎn)業(yè)上的可利用性有關(guān)本發(fā)明的GC系統(tǒng),可以作為應(yīng)用程序(APApplicationProgram)的創(chuàng)建者用意識(shí)不到存儲(chǔ)區(qū)的分配和釋放的、用于Java等面向?qū)ο蟮某绦蛘Z(yǔ)言所創(chuàng)建的AP的計(jì)算機(jī)上的執(zhí)行環(huán)境來(lái)利用。權(quán)利要求1.一種垃圾收集系統(tǒng),在由多個(gè)線程構(gòu)成的面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,釋放對(duì)應(yīng)于不再需要的對(duì)象的存儲(chǔ)區(qū)域,其特征在于,具備選擇單元,按照順序選擇多個(gè)線程中的每一個(gè);檢查單元,實(shí)施由如下步驟組成的檢查處理,這些步驟為對(duì)于被選擇的線程、停止該線程的執(zhí)行,通過(guò)參照對(duì)象指針從該線程檢出可以訪問(wèn)的對(duì)象、把該檢出的對(duì)象作為非釋放對(duì)象進(jìn)行管理,重新開(kāi)始該線程的執(zhí)行;檢測(cè)單元,在通過(guò)上述選擇單元進(jìn)行的上述選擇開(kāi)始之后,在通過(guò)執(zhí)行中的線程檢測(cè)到對(duì)象指針被作為處理對(duì)象的情況下,將該對(duì)象指針?biāo)甘镜膶?duì)象作為非釋放對(duì)象進(jìn)行管理;釋放單元,在對(duì)于所有的上述多個(gè)線程的上述檢查處理結(jié)束之后,釋放除作為非釋放對(duì)象進(jìn)行管理的對(duì)象之外的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。2.權(quán)利要求1所述的垃圾收集系統(tǒng),其特征在于,上述檢測(cè)單元只在對(duì)于執(zhí)行中的線程尚未進(jìn)行檢查處理的情況下進(jìn)行上述檢測(cè);上述檢測(cè)單元,具備檢測(cè)部,在進(jìn)行了上述檢測(cè)的情況下,將該執(zhí)行中的線程中的作為處理對(duì)象的對(duì)象指針、和從該對(duì)象指針可以追尋的對(duì)象內(nèi)的對(duì)象指針保存在對(duì)應(yīng)于該線程的作業(yè)用存儲(chǔ)區(qū)域中;管理部,在通過(guò)上述檢查單元使得線程的執(zhí)行被停止期間,將從對(duì)應(yīng)于該線程的作業(yè)用存儲(chǔ)區(qū)域內(nèi)的對(duì)象指針可以追尋的對(duì)象,作為非釋放對(duì)象進(jìn)行管理。3.權(quán)利要求2所述的垃圾收集系統(tǒng),其特征在于,在檢出對(duì)應(yīng)于被選擇的該線程的堆棧內(nèi)的對(duì)象指針?biāo)甘镜膶?duì)象是上述可以訪問(wèn)的對(duì)象時(shí),重復(fù)執(zhí)行內(nèi)容為如下步驟的處理,該步驟為檢出的該對(duì)象尚未作為非釋放對(duì)象進(jìn)行管理,并且該對(duì)象內(nèi)只要具有對(duì)象指針時(shí),就將該對(duì)象指針?biāo)甘镜膶?duì)象進(jìn)一步作為上述可以訪問(wèn)的對(duì)象檢出;上述選擇單元在最初的選擇之后,在由上述檢查單元進(jìn)行了上述檢查處理之后,只要在上述多個(gè)線程之中還存在沒(méi)有實(shí)施上述檢查處理的線程,就進(jìn)行進(jìn)一步的選擇;上述選擇單元參照有關(guān)各線程的信息,根據(jù)預(yù)定的線程選擇條件,進(jìn)行上述選擇。4.權(quán)利要求3所述的垃圾收集系統(tǒng),其特征在于,上述線程選擇條件,包含表示與線程狀態(tài)是等待狀態(tài)以外的狀態(tài)的線程相比,先選擇線程狀態(tài)是等待狀態(tài)的線程的條件;上述選擇單元只要在進(jìn)行上述選擇的時(shí)刻存在等待狀態(tài)的線程,就選擇該等待狀態(tài)的線程。5.權(quán)利要求4所述的垃圾收集系統(tǒng),其特征在于,上述線程選擇條件,包含表示與線程優(yōu)先度高的線程相比,先選擇線程優(yōu)先度低的線程的條件。6.權(quán)利要求5所述的垃圾收集系統(tǒng),其特征在于,上述線程選擇條件,包含表示與對(duì)應(yīng)于線程的堆棧尺寸大的線程相比,先選擇堆棧尺寸小的線程的條件。7.權(quán)利要求6所述的垃圾收集系統(tǒng),其特征在于,上述垃圾收集系統(tǒng)具備利用存儲(chǔ)管理單元(MMU)來(lái)管理存儲(chǔ)器的存儲(chǔ)管理機(jī)構(gòu),每當(dāng)需要生成對(duì)象時(shí),通過(guò)上述存儲(chǔ)管理機(jī)制分配對(duì)應(yīng)于該對(duì)象的存儲(chǔ)區(qū)域;上述釋放單元通過(guò)上述存儲(chǔ)管理機(jī)構(gòu),進(jìn)行存儲(chǔ)區(qū)域的釋放。8.權(quán)利要求3的垃圾收集系統(tǒng),其特征在于,上述線程選擇條件,包含表示與對(duì)應(yīng)于線程的堆棧尺寸大的線程相比,先選擇堆棧尺寸小的線程的條件。9.權(quán)利要求3的垃圾收集系統(tǒng),其特征在于,上述線程選擇條件,包含表示與線程優(yōu)先度高的線程相比,先選擇線程優(yōu)先度低的線程的條件。10.權(quán)利要求1所述的垃圾收集系統(tǒng),其特征在于,上述垃圾收集系統(tǒng)利用了使用存儲(chǔ)管理單元(MMU)來(lái)管理存儲(chǔ)器的存儲(chǔ)管理機(jī)構(gòu),每當(dāng)需要生成對(duì)象時(shí),由上述存儲(chǔ)管理機(jī)制分配對(duì)應(yīng)于該對(duì)象的存儲(chǔ)區(qū)域,上述釋放單元通過(guò)上述存儲(chǔ)管理機(jī)構(gòu),進(jìn)行存儲(chǔ)區(qū)域的釋放。11.一種垃圾收集方法,在計(jì)算機(jī)中,在由多個(gè)線程構(gòu)成的面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,釋放對(duì)應(yīng)于不再需要的對(duì)象的存儲(chǔ)區(qū)域,其特征在于,具備選擇步驟,按照順序選擇多個(gè)線程中的每一個(gè);檢查步驟,實(shí)施由如下步驟組成的檢查處理,這些步驟為對(duì)于被選擇的線程、停止該線程的執(zhí)行,通過(guò)參照對(duì)象指針從該線程檢出可以訪問(wèn)的對(duì)象、把該檢出的對(duì)象作為非釋放對(duì)象進(jìn)行管理,重新開(kāi)始該線程的執(zhí)行;檢測(cè)步驟,在通過(guò)上述選擇步驟進(jìn)行的上述選擇開(kāi)始之后,在通過(guò)執(zhí)行中的線程檢測(cè)到對(duì)象指針被作為處理對(duì)象的情況下,將該對(duì)象指針?biāo)甘镜膶?duì)象作為非釋放對(duì)象進(jìn)行管理;釋放步驟,在對(duì)于所有的上述多個(gè)線程的上述檢查處理結(jié)束之后,釋放除作為非釋放對(duì)象進(jìn)行管理的對(duì)象之外的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。12.權(quán)利要求11所述的垃圾收集方法,其特征在于,上述計(jì)算機(jī)利用了使用存儲(chǔ)管理單元(MMU)來(lái)管理存儲(chǔ)器的存儲(chǔ)管理機(jī)構(gòu),在面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,每當(dāng)需要生成對(duì)象時(shí),由上述存儲(chǔ)管理機(jī)制分配對(duì)應(yīng)于該對(duì)象的存儲(chǔ)區(qū)域;上述釋放步驟中,通過(guò)上述存儲(chǔ)管理機(jī)制進(jìn)行存儲(chǔ)區(qū)域的釋放。13.一種計(jì)算機(jī)程序,在計(jì)算機(jī)中執(zhí)行垃圾收集處理,其中該垃圾收集處理為在由多個(gè)線程構(gòu)成的面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,釋放對(duì)應(yīng)于不再需要的對(duì)象的存儲(chǔ)區(qū)域,其特征在于,上述垃圾收集處理包括選擇步驟,按照順序選擇多個(gè)線程中的每一個(gè);檢查步驟,實(shí)施由如下步驟組成的檢查處理,這些步驟為對(duì)于被選擇的線程、停止該線程的執(zhí)行,通過(guò)參照對(duì)象指針從該線程檢出可以訪問(wèn)的對(duì)象、把該檢出的對(duì)象作為非釋放對(duì)象進(jìn)行管理,重新開(kāi)始該線程的執(zhí)行;檢測(cè)步驟,在通過(guò)上述選擇步驟進(jìn)行的上述選擇開(kāi)始之后,在通過(guò)執(zhí)行中的線程檢測(cè)到對(duì)象指針被作為處理對(duì)象的情況下,將該對(duì)象指針?biāo)甘镜膶?duì)象作為非釋放對(duì)象進(jìn)行管理;釋放步驟,在對(duì)于所有的上述多個(gè)線程的上述檢查處理結(jié)束之后,釋放除作為非釋放對(duì)象進(jìn)行管理的對(duì)象之外的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。14.權(quán)利要求13所述的計(jì)算機(jī)程序,其特征在于,上述計(jì)算機(jī)利用了使用存儲(chǔ)管理單元(MMU)來(lái)管理存儲(chǔ)器的存儲(chǔ)管理機(jī)制,在面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,每當(dāng)需要生成對(duì)象時(shí),由上述存儲(chǔ)管理機(jī)制分配對(duì)應(yīng)于該對(duì)象的存儲(chǔ)區(qū)域;上述釋放步驟中,通過(guò)上述存儲(chǔ)管理機(jī)制進(jìn)行存儲(chǔ)區(qū)域的釋放。全文摘要本發(fā)明目的在于不會(huì)加長(zhǎng)AP的所有線程停止期間,并抑制垃圾收集所需時(shí)間的增加,在由多個(gè)線程構(gòu)成的面向?qū)ο蟮某绦虻膱?zhí)行過(guò)程中,具備按照順序選擇多個(gè)線程的選擇單元;實(shí)施如下檢查處理的檢查單元,該檢查處理為停止被選擇線程的執(zhí)行、從該線程檢出可以訪問(wèn)的對(duì)象并作為非釋放對(duì)象進(jìn)行管理、重新開(kāi)始該線程的執(zhí)行;檢測(cè)單元,在上述選擇單元進(jìn)行的上述選擇開(kāi)始之后,在通過(guò)執(zhí)行中的線程檢測(cè)到對(duì)象指針被作為處理對(duì)象的情況下,將該對(duì)象指針?biāo)甘镜膶?duì)象作為非釋放對(duì)象進(jìn)行管理;釋放單元,對(duì)于所有的上述多個(gè)線程,在上述檢查處理結(jié)束之后,釋放除作為非釋放對(duì)象進(jìn)行管理的對(duì)象之外的對(duì)象所對(duì)應(yīng)的存儲(chǔ)區(qū)域。文檔編號(hào)G06F9/44GK1761949SQ20048000773公開(kāi)日2006年4月19日申請(qǐng)日期2004年6月21日優(yōu)先權(quán)日2003年6月30日發(fā)明者今西祐子,土井繁則申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1