SE514318C2 - Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används - Google Patents

Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används

Info

Publication number
SE514318C2
SE514318C2 SE9903890A SE9903890A SE514318C2 SE 514318 C2 SE514318 C2 SE 514318C2 SE 9903890 A SE9903890 A SE 9903890A SE 9903890 A SE9903890 A SE 9903890A SE 514318 C2 SE514318 C2 SE 514318C2
Authority
SE
Sweden
Prior art keywords
methods
regenerated
program
garbage collection
threads
Prior art date
Application number
SE9903890A
Other languages
English (en)
Other versions
SE9903890D0 (sv
SE9903890L (sv
Inventor
Joakim Dahlstedt
Original Assignee
Appeal Virtual Machines Ab
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Appeal Virtual Machines Ab filed Critical Appeal Virtual Machines Ab
Priority to SE9903890A priority Critical patent/SE9903890L/sv
Publication of SE9903890D0 publication Critical patent/SE9903890D0/sv
Priority to KR1020027005468A priority patent/KR20020070270A/ko
Priority to EP00978146A priority patent/EP1240589B1/en
Priority to AU15632/01A priority patent/AU768181B2/en
Priority to PCT/SE2000/002096 priority patent/WO2001031455A1/en
Priority to CNB008164169A priority patent/CN100382047C/zh
Priority to US10/111,566 priority patent/US7194494B1/en
Priority to DE60039628T priority patent/DE60039628D1/de
Priority to CA002389168A priority patent/CA2389168C/en
Priority to JP2001533523A priority patent/JP4150518B2/ja
Priority to AT00978146T priority patent/ATE402443T1/de
Publication of SE514318C2 publication Critical patent/SE514318C2/sv
Publication of SE9903890L publication Critical patent/SE9903890L/sv
Priority to US11/187,529 priority patent/US7650370B2/en
Priority to US11/586,192 priority patent/US20070073794A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Processing Of Solid Wastes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)
  • Electrotherapy Devices (AREA)

Description

30 514 318 Java innefattar också metoder för s.k. tràdhantering (Thread- Management). Detta innebär att Java har ett inbyggt system för att stödja eller simulera att två eller flera program processas samtidigt. Tràdhanteringen kan uppdelas i tvâ de- lar. En del avser hur olika trådar struktureras på ett kon- trollerat sàtt. En andra del avser vilka trädar som skall köras och vilka trådar som skall vara passiva och vänta på att köras.
För att ytterligare öka effektiviteten och ställa upptaget minnesutrymme till förfogande för programmet är det inte tillräckligt att bara optimera minnet med avseende pä objek- ten.
Föreliggande uppfinning löser detta problem.
Föreliggande uppfinning hänför sig således till ett förfaran- de för att effektivisera en databehandlingsprocess vid an- vändning av en virtuell maskin (Virtual Machine), där pro- grammet innefattar en mängd metoder, d.v.s. programavsnitt, som är lagrade i den använda datorns minne och där ett skräp- samlingsförfarande (Garbage Collecting) används av program- met, och utmärkes av, att i ett första steg alla s.k. trådars (Threads) stackar (Stacks) analyseras med avseende pà vilka metoder de behöver, att i ett andra steg var och en av de behövda metoderna bringas att regenereras där förekommande pekare (References) till en metod före regenereringen ersätts med pekare till regenererade metoder, av att i ett tredje steg alla icke regenererade metoder utraderas varvid motsva- rande minnesutrymme ställs till programmets förfogande. 15 20 25 30 514 318 Nedan beskrives föreliggande uppfinning närmare, delvis i samband med ett på bifogade ritning visat utföringsexempel av uppfinningen, där - figur 1 visar ett blockschema - figur 2 visar gamla metoder - figur 3 visar enligt uppfinningen regenererade metoder.
I figur 1 illustreras att en Java virtuell maskin JVM kan användas för att köra olika dataprogram 1, 2, 3 oavsett om operativsystemet år WinNT, LINUX, Solaris eller något annat system. Även om Java är ett mycket använt programspråk är, som nämnts ovan, föreliggande uppfinning inte begränsad till detta språk, utan uppfinningen kan tillämpas på allehanda objektorienterade och plattformsoberoende motsvarande pro- gramspråk.
Föreliggande uppfinning avser således ett förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin (Virtual Machine), där programmet innefattar en mängd metoder, d.v.s. programavsnitt, som är lagrade i den använda datorns minne och där ett skräpsamlingsförfarande (Garbage Collecting) används av programmet.
Det år tidigare känt att skräpsamla objekt och därvid utrade- ra objekt som inte längre är aktuell för att därigenom ställa motsvarande minneskapacitet till förfogande.
I stora system används många metoder, d.v.s. programavsnitt, en eller ett fåtal gånger, eller så används metoder under en kort tidsperiod varefter de lämnas oanvända.
Var- Med Java och motsvarande program laddas nya metoder in, vid gamla metoder lämnas oanvända. 10 15 20 25 30 514 318 Dessutom leder adaptiv optimering till optimeringar och omop- timeringar av metoder som läggs in i minnet, och där gamla metoder lämnas oanvända.
När optimeringar av typen utvâljande av làsmekanismer (Lock Mechanism Selection) och utväljande av skräpsamlingsförfaran- de (Garbage Collection Selection) sker måste alla använda metoder som använder gamla mekanismer ersättas med nya meka- nismer.
Enligt uppfinningen bringas i ett första steg alla s.k. trå- dars (Threads) stackar (Stacks) att analyseras med avseende pà vilka metoder de behöver. I ett andra steg bringas var och en av de behövda metoderna att regenereras där förekommande pekare (References) till en metod före regenereringen ersätts med pekare till regenererade metoder. I ett tredje steg bringas alla icke regenererade metoder utraderas varvid mot- svarande minnesutrymme ställs till programmets förfogande.
Genom detta förfarande sker inte endast en utrensning av icke använda metoder, utan dessutom en omorganisation mellan de metoder som regenererats sä att metodernas pekare riktas direkt mot en regenererad metod istället för att gä via en gammal icke längre använd metod.
I figurerna 2 och 3 illustreras detta, där figur 2 visar gamla metoder och där figur 3 visar använda regenererade metoder. I figur 2 visas tre metoder foo, apa och bar. Foo startar på minnesadressen 4711. Apa startar pà adressen 4714 och bar på adressen 4720. 15 20 25 30 514 318 Analys av trådstackarna (Thread's stacks) visar att bara metoderna foo och bar används, därför att foo och bar inte pekar mot metoden apa.
Metoderna foo och bar regenereras till de metoder som finns angivna i figur 3. Härvid àterskapas metoderna foo och bar exakt men med den skillnaden att metoderna fär nya adresser och att därvid pekaren i foo till bar pekar pä bar's nya adress 4903.
Alla gamla metoder, d.v.s. metoderna i figur 2, utraderas, varvid de av dessa upptagna minnesutrymmena friställs för nyanvändning.
När skräpsamling av objekt sker stannas normalt programkör- ningen medan skräpsamling sker. Efter skräpsamlingen och raderandet av objekt som inte används âterstartas programkör- ningen.
Ett sådant förfarande är möjligt att använda när föreliggande uppfinning används.
Emellertid är det mycket föredraget att använda följande förfarande istället.
Vid förfarande enligt uppfinningen bringas under det att pro- grammet körs en tràd i taget att stoppas, varvid använda me- toder för en stoppad tråd överföres i en lista varefter trå- den àterstartas. Därefter regenereras metoderna i listan och lagras. Alla trådar bringas senare att stoppas samtidigt ef- ter det att alla trådar behandlats pà nämnt sätt, nämligen så att ifrågavarande träds alla använda metoder regenererats. 10 15 20 25 30 -514 318 Alla metoder som inte regenererats utraderas och alla tràdar återstartas med de regenererade metoderna.
Genom detta förfarande behöver inte programkörandet stoppas, utan regenereringen sker intermittent.
I Java och motsvarande språk används lásmekanismer, som ovan nämnts. Olika låsmekanismer kan utvâljas. Det väsentliga är att välja den låsmekanism som år mest effektiv för att för- hindra att mer än en tråd har tillgång till ett visst objekt samtidigt med en annan träd.
När flera trådar önskar tillgång till samma objekt eller källa föreligger ett synkroniseringsproblem. För att lösa detta i Java försöker varje träd att nå låset för en källa.
Mekanismen som används för att låsa källan kan användas på olika sätt. Beroende på hur tràdar försöker få tillgång till synkroniserade källor är olika låsmekanismer effektivast.
Enligt ett föredraget utförande när lásmekanismer (Locking Mechanisms) används, bringas i ett steg före nämnda första steg de mest effektiva låsmekanismerna att identifieras och av att de metoder som använder en sålunda identifierad låsme- kanism regenereras.
Vad gäller skràpsamlingsalgoritmer behöver också dessa selek- teras. Många objektorienterade språk använder skräpsamling.
Detta betyder att programmeraren inte explicit behöver in- struera systemet att ett visst objekt inte längre behövs.
Systemet är ansvarigt för att detektera detta och àterkräver den minnesdel som ockupera av objektet. Ett antal olika algo- ritmer har föreslagits för att göra denna detektion och detta äterkrävande effektivt. Det har visat sig att olika algorit- 10 15 514 318 mer är bäst för olika applikationer. Att välja den bästa skräpsamlingsalgoritmen för den programapplikation som körs har stor betydelse för att uppnå maximal exekveringshastighet för programmet ifråga.
Enligt en ytterligare föredragen utföringsform av uppfinning- en bringas när olika skräpsamlingsalgoritmer används, i ett steg före nämnda första steg de olika objektens allokering och livslängd att mätas varefter den mest effektiva skräpsam- lingsalgoritmen bringas att identifieras, och metoderna utgö- rande de erforderliga skräpsamlingsalgoritmerna regenereras, varefter övriga skräpsamlingsalgoritmer utraderas.
Genom att utnyttja även de föredragna utföringsformerna er- hàlls ett mycket effektivt sätt för optimering av kod, trådar och minneshantering, där det generiska är att metoder identi- fieras och regenereras för att därigenom inte belasta syste- met med icke använda metoder.

Claims (4)

10 15 20 25 30 514 318 Patçntkrav
1. Förfarande för att effektivisera en databehandlingspro- cess vid användning av en virtuell maskin (Virtual Machine), där programmet innefattar en mängd metoder, d.v.s. programav- snitt, som är lagrade i den använda datorns minne och där ett skråpsamlingsförfarande (Garbage Collecting) används av pro- grammet, k å n n e t e c k n a t a v, att i ett första steg alla s.k. trådars (Threads) stackar (Stacks) analyseras med avseende på vilka metoder de behöver, att i ett andra steg var och en av de behövda metoderna bringas att regenereras där förekommande pekare (References) till en metod före rege- nereringen ersätts med pekare till regenererade metoder, av att i ett tredje steg alla icke regenererade metoder utrade- ras varvid motsvarande minnesutrymme ställs till programmets förfogande. k ä n n e t e c k n a t a v,
2. Förfarande enligt krav 1, att under det att programmet körs bringas en tråd i taget, att stoppas, av att använda metoder för en stoppad tråd över- föres i en lista varefter träden återstartas, av att metoder- na i listan regenereras och lagras, av att alla trådar bring- as att stoppas samtidigt efter det att alla trådar behandlats på nämnt sätt, av att alla metoder som inte regenererats utraderas och av att alla trådar àterstartas med de regenere- rade metoderna.
3. Förfarande enligt krav 1 eller 2, k ä n n e t e c k n a t a v, att när låsmekanismer (Locking Mechanisms) används, bringas i ett steg före nämnda första steg de mest effektiva làsmekanismerna att identifieras och av att de metoder som använder en sålunda identifierad låsmekanism regenereras. 514 318
4. Förfarande enligt krav 1, 2 eller 3, k ä n n e t e c k - n a t a v, att när olika skrâpsamlingsalgoritmer används, bringas, i ett steg före nämnda första steg de olika objek- tens allokering och livslängd att mätas varefter den mest effektiva skräpsamlingsalgoritmen bringas att identifieras, av att metoderna utgörande de erforderliga skrâpsamlingsalgo~ ritmerna regenereras och av att övriga skräpsamlingsalgorit- mer utraderas.
SE9903890A 1999-10-28 1999-10-28 Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används SE9903890L (sv)

Priority Applications (13)

Application Number Priority Date Filing Date Title
SE9903890A SE9903890L (sv) 1999-10-28 1999-10-28 Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används
AT00978146T ATE402443T1 (de) 1999-10-28 2000-10-27 Verfahren zur freispeichersammlung von unbenutzter verfahren
US10/111,566 US7194494B1 (en) 1999-10-28 2000-10-27 Method for garbage collection of unused methods
CA002389168A CA2389168C (en) 1999-10-28 2000-10-27 A method for garbage collection of unused methods
AU15632/01A AU768181B2 (en) 1999-10-28 2000-10-27 A method for garbage collection of unused methods
PCT/SE2000/002096 WO2001031455A1 (en) 1999-10-28 2000-10-27 A method for garbage collection of unused methods
CNB008164169A CN100382047C (zh) 1999-10-28 2000-10-27 把无用方法收集到垃圾箱中的方法和***
KR1020027005468A KR20020070270A (ko) 1999-10-28 2000-10-27 미사용된 방식들의 쓰레기 수집을 위한 방법
DE60039628T DE60039628D1 (de) 1999-10-28 2000-10-27 Verfahren zur freispeichersammlung von unbenutzter verfahren
EP00978146A EP1240589B1 (en) 1999-10-28 2000-10-27 A method for garbage collection of unused methods
JP2001533523A JP4150518B2 (ja) 1999-10-28 2000-10-27 未使用のプログラムセクションの不要データを収集するための方法
US11/187,529 US7650370B2 (en) 1999-10-28 2005-07-22 System and method for regeneration of methods and garbage collection of unused methods
US11/586,192 US20070073794A1 (en) 1999-10-28 2006-10-25 Method for garbage collection of unused methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9903890A SE9903890L (sv) 1999-10-28 1999-10-28 Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används

Publications (3)

Publication Number Publication Date
SE9903890D0 SE9903890D0 (sv) 1999-10-28
SE514318C2 true SE514318C2 (sv) 2001-02-12
SE9903890L SE9903890L (sv) 2001-02-12

Family

ID=20417516

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9903890A SE9903890L (sv) 1999-10-28 1999-10-28 Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används

Country Status (11)

Country Link
US (2) US7194494B1 (sv)
EP (1) EP1240589B1 (sv)
JP (1) JP4150518B2 (sv)
KR (1) KR20020070270A (sv)
CN (1) CN100382047C (sv)
AT (1) ATE402443T1 (sv)
AU (1) AU768181B2 (sv)
CA (1) CA2389168C (sv)
DE (1) DE60039628D1 (sv)
SE (1) SE9903890L (sv)
WO (1) WO2001031455A1 (sv)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018425A (ja) * 2003-06-26 2005-01-20 Matsushita Electric Ind Co Ltd プログラム変換方法、プログラムおよび記憶媒体
EP1659496B1 (en) * 2003-06-30 2010-09-01 Panasonic Corporation Garbage collection system
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
DE102007026693A1 (de) 2007-06-08 2008-12-11 Robert Bosch Gmbh Verfahren und Vorrichtung zum Umorganisieren von Daten in einem Speichersystem, insbesondere für Steuergeräte in Kraftfahrzeugen
CA2700217C (en) * 2010-04-01 2011-07-19 Ibm Canada Limited - Ibm Canada Limitee Write barrier elision for reference arrays
US10606614B2 (en) * 2016-07-31 2020-03-31 Oracle International Corporation Container-based language runtime using a variable-sized container for an isolated method
CN114265670B (zh) * 2022-03-02 2022-09-23 阿里云计算有限公司 一种内存块整理方法、介质及计算设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5293614A (en) * 1991-04-08 1994-03-08 Texas Instruments Incorporated System and method for hard real-time garbage collection requiring a write barrier but no read barrier
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
JP3628032B2 (ja) * 1992-06-15 2005-03-09 マイクロソフト コーポレーション コンサーバティブ・スタックとジェネレイショナル・ヒープガーベージ・コレクション用コンピュータシステム及び方法
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US6041179A (en) * 1996-10-03 2000-03-21 International Business Machines Corporation Object oriented dispatch optimization
US6463581B1 (en) * 1996-10-03 2002-10-08 International Business Machines Corporation Method for determining reachable methods in object-oriented applications that use class libraries
US5915255A (en) * 1997-04-23 1999-06-22 Sun Microsystems, Inc. Method and apparatus for referencing nodes using links
US5873105A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
ATE239253T1 (de) * 1997-12-19 2003-05-15 Microsoft Corp Inkrementeller freispeichersammler
US6654951B1 (en) * 1998-12-14 2003-11-25 International Business Machines Corporation Removal of unreachable methods in object-oriented applications based on program interface analysis

Also Published As

Publication number Publication date
EP1240589B1 (en) 2008-07-23
EP1240589A1 (en) 2002-09-18
JP2003513356A (ja) 2003-04-08
CN1402847A (zh) 2003-03-12
JP4150518B2 (ja) 2008-09-17
CA2389168C (en) 2009-10-06
SE9903890D0 (sv) 1999-10-28
AU768181B2 (en) 2003-12-04
US7194494B1 (en) 2007-03-20
CA2389168A1 (en) 2001-05-03
ATE402443T1 (de) 2008-08-15
KR20020070270A (ko) 2002-09-05
SE9903890L (sv) 2001-02-12
CN100382047C (zh) 2008-04-16
WO2001031455A1 (en) 2001-05-03
DE60039628D1 (de) 2008-09-04
AU1563201A (en) 2001-05-08
US20070073794A1 (en) 2007-03-29

Similar Documents

Publication Publication Date Title
EP0938706B1 (en) Data processor with localised memory reclamation
US6487563B1 (en) Memory reclamation method
US6226653B1 (en) Method and apparatus for performing generational garbage collection using remembered set counter
US6571260B1 (en) Memory reclamation method
US6862674B2 (en) Methods and apparatus for performing a memory management technique
US6526422B1 (en) Striding-type generation scanning for parallel garbage collection
US6823351B1 (en) Work-stealing queues for parallel garbage collection
US6314436B1 (en) Space-limited marking structure for tracing garbage collectors
US6557091B2 (en) Data processor with localized memory reclamation
US6510440B1 (en) Method and apparatus for performing generational garbage collection using barrier bits
JPH10254756A (ja) リファレンスされたオブジェクトを管理するための3状態リファレンスの使用
WO2001013239A1 (en) Reduced-cost remembered-set processing in a train-algorithm-based garbage collector
GB2406933A (en) Autonomic memory leak detection and remediation
US7472144B2 (en) Method and system for resolving memory leaks and releasing obsolete resources from user session data
US7620943B1 (en) Using class properties to segregate objects in a generation managed by the train algorithm
US6820183B2 (en) Methods, systems, and computer program products for memory pool management using variable size sub-pools
SE514318C2 (sv) Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används
US7062518B2 (en) Efficiently supporting the existence of long trains in a generation managed by the train algorithm
US8176286B2 (en) Memory recycling in computer systems
US7617264B1 (en) Parallel remembered-set processing respecting popular-object detection
KR101885030B1 (ko) 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 처리 방법 및 트랜잭션 처리 장치
KR101950759B1 (ko) 저장 장치의 메모리 컨트롤러가 수행하는 가비지 컬렉션 방법 및 메모리 컨트롤러
Nawrocki et al. A storage allocation method with invalidating dangling references

Legal Events

Date Code Title Description
NUG Patent has lapsed