DE112016002420T5 - Leerlaufzeit-software-speicherbereinigung - Google Patents

Leerlaufzeit-software-speicherbereinigung Download PDF

Info

Publication number
DE112016002420T5
DE112016002420T5 DE112016002420.7T DE112016002420T DE112016002420T5 DE 112016002420 T5 DE112016002420 T5 DE 112016002420T5 DE 112016002420 T DE112016002420 T DE 112016002420T DE 112016002420 T5 DE112016002420 T5 DE 112016002420T5
Authority
DE
Germany
Prior art keywords
garbage collection
idle period
future
tasks
software
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
DE112016002420.7T
Other languages
English (en)
Inventor
Hannes Payer
Jochen Mathias Eisinger
Manfred Ernst
Ross Cameron Mcilroy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112016002420T5 publication Critical patent/DE112016002420T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Abstract

Ein Datenverarbeitungsgerät plant Software-Speicherbereinigung für Software-Anwendungen während Prozessorleerlaufzeiten. Ein zukünftiger Leerlaufzeitraum, während dem sich ein Prozessor im Leerlaufzustand während der Ausführung von einer oder mehreren Software-Anwendungen befindet, wird bestimmt, und eine Speicherzuteilung wird für den zukünftigen Leerlaufzeitraum bestimmt. Eins einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen basiert auf dem bestimmten zukünftigen Leerlaufzeitraum und der geschätzten Speicherzuteilung, und seine Durchführung wird für während den zukünftigen Leerlaufzeitraum geplant. Das ausgewählte Speicherbereinigungsereignis wird anschließend während dem zukünftigen Leerlaufzeitraum durchgeführt.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Speicherbereinigung ist eine Form des automatisierten Speichermanagements, bei der eine Laufzeitumgebung versucht, Speicherplatz freizumachen, der von Datenobjekten belegt ist, die von in der Betriebsumgebung laufenden Software-Anwendungen nicht mehr verwendet werden. Ein Ziel der Software-Speicherbereinigung ist es möglicherweise, Speicherplatz freizumachen, um eine verschlankte Betriebsumgebung bereitzustellen und dadurch die Betriebseffizienz zu erhöhen. Software-Speicherbereinigung kann jedoch zu unvorhersehbaren Zeiten auftreten und dadurch eine negative Auswirkung auf das Benutzererlebnis haben. So kann die Software-Speicherbereinigung beispielweise eine Unterbrechung bei der Wiedergabe einer Benutzeroberfläche für einen Nutzer oder während eines Zeitraums auftreten, in dem Nutzer mit der Benutzeroberfläche agiert. Darüber hinaus variiert häufig der für die Speicherbereinigung markierte Bereich, und es werden möglicherweise verlängerte Ausführungszeiten zum Bereinigen ungenutzten Speicherplatzes von Anwendungen erforderlich.
  • KURZDARSTELLUNG DER OFFENBARUNG
  • Die gegenständliche Technologie stellt ein System und ein computerimplementiertes Verfahren zur Planung von Software-Speicherbereinigung während Leerlaufzeiten von Prozessoren bereit. Bei einer oder mehreren Implementierungen umfasst das Verfahren Bestimmen eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden, Schätzen, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die eine oder die mehreren Software-Anwendungen, Auswählen einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung, Planen des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist, und Durchführen des ausgewählten Software-Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums. Andere Aspekte beinhalten entsprechende Systeme, Vorrichtungen und Computerprogrammprodukte zur Implementierung des computerimplementierten Verfahrens.
  • Bei einer oder mehreren Implementierungen umfasst ein System einen oder mehrere Prozessoren und einen Speicher, der Anweisungen beinhaltet. Wenn die Anweisungen von dem einen oder mehreren Prozessoren ausgeführt werden, veranlassen sie den einen oder die mehreren Prozessoren, die Schritte des Bestimmens eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden, des Schätzens, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die einen oder die mehreren Software-Anwendungen, des Auswählen einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung, des Planens des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist, und des Durchführens des ausgewählten Software-Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums zu ermöglichen. Andere Aspekte umfassen entsprechende Vorrichtungen und Computerprogrammprodukte zur Implementierung des vorstehenden Systems.
  • Bei einer oder mehreren Implementierungen umfasst ein computerlesbares Speichermedium Anweisungen, die, wenn sie ausgeführt werden, die Schritte des Bestimmens eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden, des Schätzens, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die einen oder die mehreren Software-Anwendungen, des Auswählens einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung, des Planens des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist, und des Durchführen der ausgewählten Software-Speicherbereinigungsaufgabe während des zukünftigen Leerlaufzeitraums ermöglichen. Andere Aspekte umfassen entsprechende Verfahren, Vorrichtungen und Computerprogrammprodukte zur Implementierung des vorstehenden computerlesbaren Speichermediums.
  • Es versteht sich von selbst, dass auch andere Konfigurationen der gegenständlichen Technologie anhand der folgenden ausführlichen Beschreibung für Sachkundige ohne Weiteres offensichtlich werden, im Rahmen der verschiedenen Konfigurationen der gegenständlichen Technologie als Veranschaulichung gezeigt und beschrieben sind. Wie zu erkennen ist, kann die gegenständliche Technologie andere und verschiedenartige Konfigurationen hervorbringen, und ihre vielen Einzelheiten können Modifizierungen in vielerlei anderer Hinsichten hervorbringen, ohne vom Schutzumfang der gegenständlichen Technologie abzuweichen. Dementsprechend sind die Zeichnungen und die ausführliche Beschreibung als veranschaulichend und nicht als einschränkend anzusehen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Im Folgenden erfolgt eine ausführliche Beschreibung in Bezug auf die beigefügten Zeichnungen.
  • 1 bildet ein exemplarisches System, einschließlich exemplarischen Software-Komponenten zum Planen von Software-Speicherbereinigung während Prozessorleerlaufzeiten ab.
  • 2 bildet ein Diagramm eines exemplarischen Planens ausstehender Aufgaben, einschließlich Aufgaben für Leerlaufzeiten ab.
  • 3 bildet ein Flussdiagramm eines ersten exemplarischen Prozesses zum Planen von Software-Speicherbereinigung während Leerlaufzeiten von Prozessoren ab.
  • 4 ist ein Diagramm, das ein exemplarisches elektronisches System zur Verwendung im Zusammenhang mit Planen von Software-Speicherbereinigung während Leerlaufzeiträumen von Prozessoren abbildet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die nachstehend aufgeführte ausführliche Beschreibung ist als eine Beschreibung verschiedener Konfigurationen der gegenständlichen Technologie beabsichtigt und nicht dazu vorgesehen, die einzigen Konfigurationen zu darzustellen, mit denen die gegenständliche Technologie umgesetzt werden kann. Die beigefügten Zeichnungen werden hierin integriert und sind ein Bestandteil der ausführlichen Beschreibung. Die ausführliche Beschreibung beinhaltet spezifische Angaben zum Zwecke des Bereitstellens eines gründlichen Verständnisses der gegenständlichen Technologie. Es wird für den Fachmann jedoch klar und deutlich ersichtlich sein, dass die gegenständliche Technologie nicht auf die hierin dargelegten spezifischen Einzelheiten beschränkt ist und auch ohne diese spezifischen Details umgesetzt werden kann. In einigen Fällen werden wohlbekannte Strukturen und Komponenten in Blockdiagrammform dargestellt, um ein erschwertes Verständnis der Konzepte der gegenständlichen Technologie zu verhindern.
  • Die gegenständliche Technologie umfasst einen Mechanismus zum Planen von Software-Speicherbereinigung während Prozessor-Leerlaufzeiträumen zum Verringern von unregelmäßiger Leistung in Systemen, die Speicherbereinigung verwenden, um Speicherplatz für Software-Anwendungen verfügbar zu machen. Ein Speicher-Manager und ein Task-Scheduler (beispielsweise eine Backend-Software-Komponente) führen mehrere Laufzeitschätzungen durch, um zu bestimmen, ob und zu welchen Zeiten von den laufenden Software-Anwendungen genutzter Speicherplatz einer Speicherbereinigung unterzogen werden soll, um die negative Auswirkung der Speicherbereinigung auf die Leistung der Anwendungen zu verringern. Auf diese Weise bestimmen der Speicher-Manager und der Task-Scheduler zukünftige Leerlaufzeiten des Prozessors, wie viel Speicherbereinigung möglicherweise erforderlich ist, wenn diese Leerlaufzeiten eintreten, priorisieren Speicherbereinigungsereignisse, die zum Abschließen der geschätzten Speicherbereinigung erforderlich sind und führen die Planung der priorisierten Speicherbereinigungsereignisse während der bestimmten Leerlaufzeiten durch.
  • So plant beispielsweise ein Scheduler System- und Anwendungsaufgaben, organisiert Aufgaben nach unterschiedlichen Aufgabentypen (z. B. Erstelleraufgaben, generische Aufgaben, usw.) und entscheidet, welcher Typ von Aufgabe zu einer bestimmten Zeit ausgeführt werden sollte. Der Task-Scheduler bestimmt einen zukünftigen Zeitraum, in dem sich ein Prozessor in einem Leerlauf befindet. Der Scheduler bestimmt ferner, welche Aufgaben als Aufgaben für Leerlaufzeiten klassifiziert werden können; beispielsweise Aufgaben, die für den aktuellen Betrieb des Systems oder die Ausführung von Anwendungen nicht erforderlich sind. Speicherbereinigung ist beispielsweise eine Aufgabe, die als Aufgabe für Leerlaufzeiten klassifiziert werden kann. Der Scheduler führt eine Liste von ausstehenden Aufgaben für Leerlaufzeiten und kann diese Aufgaben während der Leerlaufzeiträume der Aufgabenausführung zeitlich planen.
  • Der Speicher-Manager schätzt, wie viel Speicherplatz zugewiesen wurde und wie viel Speicherplatz zukünftigen, vom Scheduler bestimmten Leerlaufzeiten zugewiesen werden kann. Demgemäß kann die Speicherbereinigung für geeignete Leerlaufzeiten angesetzt werden. So kann der Speicher-Manager beispielsweise bestimmen, dass x MB Speicherplatz zugewiesen wurden und dass eine Zuteilungsgeschwindigkeit y MB/ms beträgt. Kommt die nächste Leerlaufzeit dann in 3 ms, wird geschätzt, dass x + 3y MB von der nächsten Leerlaufzeit zugeteilt werden. Ausgehend von dieser Berechnung kann der Speicher-Manager schätzen, wie lange es möglicherweise dauert, den Speicher zu bereinigen, beispielsweise ausgehend von vergangenen Speicherbereinigungsereignissen.
  • Der Speicher-Manager kann Zeitschätzungen für zukünftige mehrmalige Speicherbereinigungsereignisse, so unter anderem eine Speicherbereinigungsmarkierung für neu zugeteilte Objekte, Speicherbereinigungsmarkierung für alte Objekte, Speicherbereinigungsfertigstellung und Speicherreinigung bereitstellen. Jede Zeitschätzung kann auf einem jeweiligen Ereignis und einer geschätzten Speicherzuteilung basieren, die einer bevorstehenden Leerlaufzeit entspricht. Da bevorstehende Leerlaufzeiten möglicherweise nicht lang genug sind, um ein gesamtes Ereignis fertigzustellen, kann der Speicher-Manager Ereignisse in kleinere Abschnitte von Operationen unterteilen. So kann das Markieren alter Objekte zur Speicherbereinigung beispielswiese in aufsteigende Markierungsschritte unterteilt werden. Der Speicher-Manager kann für jeden Schritt eine Zeitschätzung berechnen, worin er die geschätzte Speicherzuteilung über mehrere ausstehende Leerlaufzeiten berücksichtigt.
  • Der Speicher-Manager kann nur dann Speicherbereinigungsereignisse planen, wenn die Speicherzuteilung einen bestimmten Schwellenwert erreicht oder schätzungsweise erreichen wird. Der Grenzwert für die Zuteilung kann beispielswiese eine vorab festgelegte Menge an Speicherplatz sein, die bis zu einem vorab festgelegten Zeitpunkt (beispielsweise zur nächsten Leerlaufzeit) erforderlich ist, oder eine vorab festgelegte Zuteilungsgeschwindigkeitsgrenze sein. Der Speicher-Manager kann dem Task-Scheduler zusätzliche Speicherbereinigungsereignisse und ihre geschätzten Fertigstellungszeiten als Aufgaben für Leerlaufzeiten hinzufügen, und der Scheduler kann die Ereignisse auf der Grundlage der Ereignisgröße und der zeitlich geplanten Leerlaufzeiten auswählen. Speicherbereinigungsereignisse können in einer FIFO-Reihenfolge gruppiert werden. So kann beispielsweise erforderlich sein, dass mehrere Ereignisse aufsteigend Objekte markieren und jedes Ereignis kann als ein zeitlich aufgeteilter Abschnitt (z. B. 10 ms, 20 ms, 50 ms, usw.) geplant sein. Die Durchführung der Speicherbereinigungsereignisse kann zu zukünftigen Leerlaufzeiten in ihrer zeitlich geplanten Reihenfolge angesetzt sein.
  • 1 stellt ein exemplarisches System 100 dar, das exemplarische Komponenten zum Planen von Software-Speicherbereinigung während Prozessorleerlaufzeiten gemäß einem oder mehreren Aspekten der gegenständlichen Technologie umfasst. System 100 umfasst einen Prozessor 102 und einen Speicher 104. Wenn ein Anwendungsprozess 106 beginnt, wird die ausführbare Datei, die dem Prozess entspricht, in einen virtuellen Adressenraum in dem Speicher 104 abgebildet, der für den Prozess 106 zugeteilt ist. Der virtuelle Adressenraum kann auch einen Object Heap 108 umfassen. Der Object Heap 108 kann zusätzlichen Bibliotheken bereitgestellt werden, die in den Adressenraum abgebildet werden. Der Object Heap 108 kann von der Anwendung oder der Laufzeitumgebung (unter anderem beispielsweise einem Betriebssystem oder einer virtuellen Maschine) verwaltet werden, in der die Anwendung läuft. Diese Verwaltung kann Speicherbereinigung umfassen, mit der Speicherplatz während der Ausführung des Prozesses 106 bereitgestellt wird. Bei Anwendungsprozess 106 kann es sich um eine Web-Anwendung, um einen ausführenden Prozess, der aus einer Scripting- oder einer kompilierten dynamischen Programmiersprache innerhalb der Web-Anwendung abgeleitet wird, oder um eine andere Anwendung handeln, die in einer Laufzeitumgebung ausgeführt werden kann.
  • System 100 umfasst ferner einen Task-Scheduler 110, der entscheidet, welche Aufgabe zu irgendeinem Zeitpunkt auf dem Main-Thread ausgeführt wird. Demgemäß ermöglicht Task-Scheduler 110 die Priorisierung von latenzsensitiven Aufgaben (beispielsweise Eingabeereignisse oder Ersteller-Updates). Bei einer oder mehreren Implementierungen umfasst Task-Scheduler 110 mehrere Software-Komponenten, worin eine oder mehrere Komponenten Bestandteil eines Software-Speicherbereinigungselementes sind oder in dieses eingebettet sind, das gemäß der gegenständlichen Technologie angepasst ist. Zusätzlich oder alternativ dazu kann der Task-Scheduler 110 eine oder mehrere Komponenten in Datenübertragung zu dem Software-Speicherbereinigungs-Element (beispielsweise über eine API-Schnittstelle) umfassen. Auf diese Weise können eine oder mehrere Komponenten des Task-Schedulers 110 mit der Planung von Aufgaben beauftragte Komponenten innerhalb des Speicherbereinigungs-Elements über Prozessorleerlaufzeiten informieren. Demgemäß können die Komponenten des Task-Schedulers 110 Aufgaben verschiedenen Aufgabentypen (beispielsweise Erstelleraufgaben, Speicherbereinigungsaufgaben usw.) zugeordnet werden, womit die Komponenten des Task-Schedulers (beispielsweise innerhalb des Speicherbereinigungs-Elements) entscheiden können, welcher Typ von Aufgabe zu einer bestimmten Zeit ausgeführt werden sollte. Task-Scheduler 110 kann eine Aufgabe als eine Aufgabe für Leerlaufzeiten kategorisieren.
  • Task-Scheduler 110 führt die Liste von ausstehenden Aufgaben für Leerlaufzeiten und plant diese Aufgaben während der Leerlaufzeiträume der Aufgabenausführung. Task-Scheduler 110 kann Benachrichtigungen von einem Drawing-Compositor 112 hinsichtlich Frame-Anfangs- und Festschreibungsereignissen, ebenso wie den Status anderer gegenwärtig ausstehender Aufgaben (beispielsweise Aufgaben höherer Prioritäten) verwenden, um Leerlaufereignisse für Zeiten zu planen, in denen sie keinen Anstieg der Frame-Latenz verursachen. Aufgaben für Leerlaufzeiten können beispielsweise auch während längerer Zeiträume durchgeführt werden, wenn keine Frames von dem Drawing-Compositor 112 festgeschrieben (”committed”) werden. Task-Scheduler 110 kann Aufgaben in Bezug auf andere Aufgaben neu ordnen. Jede Aufgabe kann einer Aufgaben-Deadline zugeordnet werden, die von Task-Scheduler 110 bereitgestellt wird. Wenn eine Aufgabe nicht bis zum Ablauf der Deadline fertiggestellt werden kann, kann die Aufgabe für die Durchführung während des nächsten Leerlaufzeitraums geplant werden.
  • Während eines Leerlaufzeitraums kann der Scheduler die älteste Aufgabe aus der Warteschlange ausstehender Aufgaben nehmen und ihre Ausführung mit einer Deadline planen, die dem verbleibenden Leerlaufzeitraum entspricht oder eher als dieser ist. Wird die Aufgabe vor dieser Deadline fertiggestellt, dann kann der Scheduler die Ausführung von Aufgaben für Leerlaufzeiten bis zur Deadline in einer FIFO (”first in-first out”) Reihenfolge ausführen. Eine Aufgabe für Leerlaufzeiten kann nur einmal ausgeführt werden, und bei ihrer Ausführung kann der Task-Scheduler 110 bestimmen, ob die Aufgabe in der zulässigen Zeit bis zum Ablauf der Deadline eine nützliche Arbeit durchführen kann. Wenn keine nützliche Arbeit verrichtet werden kann, kann die Aufgabe möglicherweise nicht ausgeführt, sondern stattdessen erneut der Warteschlange von Aufgaben für Leerlaufzeiten zugeordnet werden. Die Mehrheit von Aufgaben für Leerlaufzeiten kann zwischen Frames ausgeführt werden. Auf diese Weise kann der Zeitraum ein Zeitraum mit der Dauer x, beispielsweise weniger als oder gleich 10 ms, 25 ms, 50 ms, usw. sein.
  • Bei einigen Implementierungen können einem Task-Scheduler 110 zugeordnete Aufgaben für Leerlaufzeiten an eine eingehende Warteschlange mit Aufgaben Leerlaufzeiten angehängt werden. Zu Beginn eines neuen Leerlaufzeitraums können die eingehenden Aufgaben in eine Warteschlange ausstehender Aufgaben für Leerlaufzeiten entleert werden, worin der Task-Scheduler 110 sie gemäß FIFO-Prinzip ausführen kann. In diesem Beispiel können sich Aufgaben für Leerlaufzeiten während ihrer eigenen Ausführung erneut zuordnen, selbst wenn sie vor Ablauf der Deadline keine reale Arbeit verrichten konnten. Bei einer oder mehreren Implementierungen kann der Task-Scheduler 110 Aufgaben höherer Priorität (beispielsweise Ersteller- oder Eingabeaufgaben) während Leerlaufzeiten mit Vorzug gegenüber Aufgaben für Leerlaufzeiten planen.
  • Der Task-Scheduler 110 kann verschiedene Signale verwenden, um zu entscheiden, wann Leerlaufzeiträume beginnen und enden sollten. So kann der Task-Scheduler 110 beispielsweise eine Eingabe von einem Software-Drawing-Compositor 112 (beispielsweise ein Bestandteil einer Software-Laufzeitumgebung oder einen Anwendungsprozess, der für das Zeichnen einer Benutzerschnittstelle oder eines Abschnittes davon zuständig ist) verwenden, um sicherzustellen, dass Aufgaben für Leerlaufzeiten nur zwischen der Zeit, wenn ein Frame festgeschrieben wird, und der Zeit, wann der nächste Frame erwartungsgemäß beginnt, geplant werden. Demgemäß sind die Leerlaufzeiträume für zwischen Frames liegende Zeiten begrenzt, und wenn der Compositor inaktiv ist (weil keine Frames gezeichnet werden), dürfen keine Leerlaufzeiträume auftreten. Ein Beispiel kann das Zuordnen einer verspäteten Aufgabe umfassen, die einen Leerlaufzeitraum auslöst, wenn über einen bestimmten Zeitraum keine Frames gezeichnet worden sind.
  • Wie dies in 1 dargestellt ist, kann System 100 ferner einen Speicher-Manager 114 aufweisen. Speicher-Manager 114 verwaltet Speicherplatz für die Software-Laufzeitumgebung und ist so konfiguriert, dass er Speicherzuteilung überwacht und Speicherbereinigungsereignisse (als Aufgaben) Task-Scheduler 110 auf der Grundlage einer bestimmten Speicherzuteilung zuordnet. Wie dies vorstehend beschrieben ist, kann der Speicher-Manager 114 schätzen, wie viel Speicherplatz zugeteilt worden ist und wie viel Speicherplatz künftigen, von dem Task-Scheduler 110 bestimmten Leerlaufzeiten zugeteilt werden kann.
  • Der Speicher-Manager 114 kann beispielsweise den Task-Scheduler 110 anfragen, die nächsten Leerlaufzeit(en) zu bestimmen und auf der Grundlage einer Zuteilungsgeschwindigkeit bestimmen, wie viel Speicher durch die nächste(n) Leerlaufzeit(en) zugeteilt werden wird. Der Speicher-Manager 114 kann anschließend, beispielsweise auf der Grundlage der geschätzten Speicherzuteilung und bisheriger Speicherbereinigungsereignissen schätzen, wie lang es möglicherweise dauern wird, den Speicher zu bereinigen. So kann Speicher-Manager 114 beispielsweise die Dauer der Speicherbereinigung auf der Grundlage der durchschnittlichen Speicherzuteilungsgeschwindigkeit der Anwendung, der durchschnittlichen Speicherbereinigungszeit für neue und/oder alte Objekte (beispielsweise pro MB) und der durchschnittlichen Markierungsgeschwindigkeit (beispielsweise pro MB) schätzen. Zu anderen exemplarischen Faktoren zum Schätzen der Dauer eines Speicherbereinigungsereignisses kann ein Heap-Zustand (z. B. Prozentsatz fragmentiert, gleichbleibend, beschädigt), Prozentsatz von festgeschriebenem Heap, freier, reservierter Zuteilungslast und Markierungsgeschwindigkeit (z. B. auf der Grundlage bisheriger Geschwindigkeiten) gehören.
  • Der Speicher-Manager 114 kann eine aufsteigende Speicherbereinigung (z. B. linear von 0 ms–XX ms konfiguriert), Reinigungen (z. B. ungefähr 5–10 ms) und lange volle Speicherbereinigungen (z. B. 30–XXX ms) auslösen. Speicher-Manager 114 kann Task-Scheduler 110 jedes Speicherbereinigungsereignis, unter anderem eine geschätzte Zeit für die Fertigstellung der Aufgabe, zustellen. Bei einigen Implementierungen kann Speicher-Manager 114 größere Ereignisse oder Aufgaben in kleinere Abschnitte unterteilen, wenn sie über eine vorab festgelegte Länge hinaus andauern, oder Speicherbereinigungsereignisse in Aufgaben mit einer vorab festgelegten Dauer (z. B. 10 ms oder 50 ms) organisieren.
  • Bei einer oder mehreren Implementierungen führt der Task-Scheduler 110 eine globale Liste mit ausstehenden Aufgaben (unter anderem Speicherbereinigungsaufgaben) und priorisiert diese. Bei einem Beispiel kann der Speicher-Manager 114 ein Speicherbereinigungsereignis oder einen Abschnitt des Ereignisses als eine Aufgabe für Leerlaufzeiten dem Main-Thread, einschließlich einer Priorität für die Aufgabe und den Typ des Ereignisses (z. B. Markierung, Fertigstellung, Reinigung, Kompaktierung), sowie eine geschätzte Zeit für die Ausführung der Aufgabe zustellen. Auf diese Weise kann Speicher-Manager 114 Task-Scheduler 110 und Drawing-Compositor 112 Speicherbereinigungsaufgaben zustellen und Scheduler 110 über gute Möglichkeiten zum Durchführen ausstehender Aufgaben für Leerlaufzeiten benachrichtigen, und Task-Scheduler 110 kann anschließend bestimmen, welche Aufgabe zu welcher Zeit durchgeführt werden soll.
  • Task-Manager 110 und Speicher-Manager 114 können außerhalb einer Laufzeitumgebung (z. B. eine virtuelle Maschine) implementiert sein, um Aufgabenorganisation und Priorität, ebenso wie Speicherbereinigung von innerhalb der Laufzeitumgebung erstellten Objekten (z. B. über eine oder mehrere APIs) zu verwalten. Zusätzlich oder alternativ dazu können Komponenten des Task-Managers 110 und des Speicher-Managers 114 Bestandteil der Laufzeitumgebung oder in diese eingebettet sein. Die Laufzeitumgebung kann Bestandteil einer Webbrowser-Anwendung oder in diese eingebettet sein und/oder zuständig für Webanwendungen (z. B. JAVASCRIPT, JAVA-Applets) und sonstige dynamische Programmiersprachen sein, die in der Laufzeitumgebung laufen. Bei einer oder mehreren Implementierungen kann Drawing-Compositor 112 eine einen Display wiedergebende Komponente der Laufzeitumgebung sein, der für das erneute Zeichnen von Frames in der Anzeige (z. B. eines Fensters) für einen Anwendungsprozess 106 zuständig ist.
  • 2 bildet ein Diagramm eines beispielhaften Zeitplans 200 ausstehender Aufgaben, unter anderem Aufgaben für Leerlaufzeiten gemäß Aspekten der gegenständlichen Technologie ab. Task-Scheduler 110 empfängt Benachrichtigungen von Drawing-Compositor 112 zu Frame-Anfangszeiten 202 (z. B. auf der Grundlage einer vorab festgelegten Frame-Geschwindigkeit) und erstellt einen Zeitplan mit Aufgaben auf der Grundlage der Frame-Anfangszeiten 202. Das dargestellte Beispiel umfasst drei Frame-Anfangszeiten 202, die zwei aufeinanderfolgende Aufgabenzeiträume definieren. Task-Scheduler 110 empfängt Anwendungsaufgaben von Anwendung 106 und/oder der Laufzeitumgebung und organisiert sie so, dass ausgehend von der Frame-Geschwindigkeit Zeichnungslatenz verringert oder eliminiert wird. So kann Task-Scheduler 110 eine Befehlswarteschlange für die Laufzeitumgebung auf Nachrichten (z. B. vom Compositor 112) hinsichtlich Frame-Anfang überwachen und Leerlaufzeiträume 204, 206 zwischen aufeinanderfolgenden Anfangszeiten 202 bestimmen.
  • Wie abgebildet, kann Task-Scheduler 110 zuerst essentielle Aufgaben, wie beispielsweise Eingabeaufgaben 208 (z. B. Definieren eines vom Nutzer eingegebenen Schlüssels oder Befehls), sowie Compositor-Aufgaben 210 (z. B. Zeichnen eines Frames) mit einer verbleibenden Zeit bis zum nächsten Frame-Anfang planen, womit ein Leerlaufzeitraum 204, 206 definiert wird. Bei einer oder mehreren Implementierungen können die Leerlaufzeiträume 204, 206 beispielsweise anhand einer Frame-Endzeit (z. B. einer Frame-Festschreibung) bis zur nächsten Frame-Anfangszeit 202 bestimmt werden. Leerlaufzeiträume 204, 206 können von Task-Scheduler 110 zum Zustellen von Aufgaben in einer Aufgabenwarteschlange, unter anderem von Speicherbereinigungsaufgaben verwendet werden.
  • Bei einigen Aspekten kann eine Aufgabe für Leerlaufzeiten (z. B. Speicherbereinigungsaufgabe) möglicherweise nicht innerhalb eines Leerlaufzeitraums fertiggestellt werden. So kann Task-Scheduler 110 beispielsweise versuchen, Leerlaufaufgabe 212, eine 50 ms-Aufgabe, dem Leerlaufzeitraum 204 zuzustellen. Der Task-Manager 110 hat jedoch bereits eine oder mehrere Aufgaben mit hoher Priorität 214 für den Leerlaufzeitraum 204 geplant, so dass weniger als 50 ms für die Fertigstellung von Leerlaufaufgabe 212 zur Verfügung stehen. In dieser Situation kehrt die Leerlaufaufgabe 212 sofort zurück und wird einem darauffolgenden Leerlaufzeitraum zugestellt, der ausreichend lang ist, um die erneut zugestellte Aufgabe fertigzustellen, beispielsweise Leerlaufzeitraum 206 in 2.
  • Bei einigen Implementierungen kann Task-Scheduler 110 die Ausführung von Leerlaufaufgaben auf Zeiträume zwischen Frames beschränken, und somit verhindern, dass sich Aufgaben, die nicht bis zu einer aktuellen Deadline fertiggestellt werden können, erneut während der verbleibenden Zeit desselben Leerlaufzeitraums selbst zustellen. Dies kann verhindern, dass sich eine Aufgabe erneut und wiederholt selbst während der verbleibenden Zeit des Leerlaufzeitraums zustellt und somit unnötig CPU-Leistung verbrannt wird.
  • Bei einer oder mehreren Implementierungen kann Task-Scheduler 110 auf der Grundlage von Eingaben von dem Drawing-Compositor 112 längere Leerlaufzeiträume bestimmen, in denen keine Frames durch Drawing-Compositor 112 festgeschrieben wurden. In diesem Fall können Leerlaufaufgaben nicht während eines einzelnen Leerlaufzeitraums 204, 206 auf eine vorab festgelegte Abschnittsdauer (z. B. 50 ms-Leerlaufaufgabe) begrenzt werden. Der Task-Scheduler 110 kann so konfiguriert sein, dass er den gesamten Leerlaufzeitraum für die Erledigung von jeglichen erforderlichen Background-Arbeiten plant; solange die darin geplanten Aufgaben am Ende einer jeweils vorab festgelegten Abschnittsdauer (z. B. aller 50 ms) Back-Scheduling-Control an dem Scheduler erbringen, um ein Blockieren von Eingabeereignissen und demzufolge bemerkbare Latenz an den Eingabeereignissen zu verhindern. Während der langen Leerlaufzeiträume 204, 206 (z. B. über eine vorab festgelegte Dauer), dürfen sich Aufgaben möglicherweise selbst dem gleichen Leerlaufzeitraum zustellen. Solange der verbleibende Teil des Leerlaufzeitraums lang genug zum Fertigstellen der Leerlaufaufgabe ist, sollte die Leerlaufaufgabe nicht abgelehnt werden; und demzufolge die Fähigkeit verhindert werden, dass die Aufgabe den Versuch unternimmt, sich wiederholt selbst zuzustellen.
  • 3 bildet einen Ablaufplan eines ersten exemplarischen Prozesses 300 zum Planen von Software-Speicherbereinigung während Prozessorleerlaufzeiträumen gemäß Aspekten der gegenständlichen Technologie ab. Zu Erklärungszwecken wird der exemplarische Prozess 300 hierin in Bezug auf die Komponenten von 1 und 2 beschrieben. Ferner werden zu Erklärungszwecken die Blöcke des exemplarischen Prozesses 300 hierin ihrem Auftreten nach in einer seriellen oder linearen Reihenfolge beschrieben. Es können jedoch auch mehrere Blöcke des exemplarischen Prozesses 300 parallel auftreten. Darüber hinaus müssen die Blöcke des exemplarischen Prozesses 300 nicht in der dargestellten Reihenfolge ausgeführt werden und/oder einer oder mehrere der Blöcke des exemplarischen Prozesses 300 müssen nicht durchgeführt werden.
  • In dem dargestellten exemplarischen Flussdiagramm 100 bestimmt (z. B. Task Scheduler 110) einen zukünftigen Leerlaufzeitraum (z. B. Leerlaufzeitraum 204), während dem sich Prozessor 102 während der Ausführung einer oder mehrerer Software-Anwendungen (302) im Leerlaufzustand befindet. Wie dies vorstehend beschrieben ist, kann der Leerlaufzeitraum anhand einer Wiedergabeanfangszeit eines ersten Frames und einer Wiedergabezeit eines zweiten Frames bestimmt werden. Frame-Anfangszeiten können von dem Drawing-Compositor 112 bestimmt werden. Drawing-Compositor 112 kann beispielsweise Frames mit Task-Scheduler 110 gemäß einer vorab festgelegten Frame-Geschwindigkeit planen. So kann beispielsweise ein 60 fps-(Frames pro Sekunde)Drawing-Compositor Frame-Anfangszeiten so zustellen, dass sie alle 16,6 ms beginnen. Der bestimmte zukünftige Leerlaufzeitraum kann ein Zeitraum zwischen der ersten Frame-Wiedergabezeit und der zweiten Frame-Wiedergabezeit sein, der keine Anwendungsaufgaben beinhaltet (z. B. Eingabeaufgaben, Ersteller-Aufgaben), die von der Anwendung oder der Laufzeitumgebung gefordert werden.
  • In interaktiven Anwendungen (z. B. JavaScript-Anwendungen, die Layout und Raster implementieren) kann bei einer berechneten Frame-Zeit von mehr als 16,6 ms von einer unerwünscht hohen Latenz ausgegangen werden. Dieselben Anwendungen können jedoch auch Speicherbereinigungsprozesse umfassen, die, wenn sie ausgeführt werden, nicht länger als die Frame-Dauer sind und dadurch unerwünschte, vom Nutzer bemerkbare Pausen in der Frame-Zeichnung verursachen. So kann die Speicherbereinigung beispielsweise mehrere unterschiedliche Ereignisse umfassen, wozu beispielsweise Reinigen, Markieren und Kompaktieren der markierten Objekte gehört, die, wenn sie festgeschrieben werden, für ihre gemeinsame Ausführung eine erhebliche Menge an Zeit erfordern. Das Ausschalten der Speicherbereinigung kann zu „Out-of-Memory”-Fehlern führen und das programmbasierte Aufrufen von Speicherbereinigung kann einen negativen Einfluss auf die Speicherbereinigungs-Heuristik haben. In vielen Fällen sollten die Anwendungen nicht mit dem Speicherbereinigungselement interagieren. Demgemäß trennt die gegenständliche Technologie automatisch die verschiedenen Speicherbereinigungsereignisse in kleinere, besser handhabbare Abschnitte, die Task-Scheduler 110 als Leerlaufaufgaben zugestellt werden und durchgeführt werden können, während sich das System in einem Leerlaufzustand befindet. Demgemäß bleibt die Speicherbereinigung vor der Anwendung versteckt, obwohl sie jedoch die Möglichkeit von Frame-Verzögerung verringert.
  • Dementsprechend bestimmt System 100 zur Unterteilung der Speicherbereinigungsereignisse zunächst, wie viel Speicherbereinigung erforderlich ist. Auf diese Weise schätzt System 100 (z. B. Speicher-Manager 114) für die zukünftigen Leerlaufzeiträume eine Zuteilung von Speicherplatz für die eine oder mehreren Software-Anwendungen (304). Speicher-Manager 114 kann schätzen, wie lange es möglicherweise dauert, um den Speicherplatz für jeden unterschiedlichen Typ von verfügbaren Speicherbereinigungsereignissen zu bereinigen. So kann der Speicher-Manager 114 beispielsweise die Dauer der Speicherbereinigung für neue und/oder alte Objekte (z. B. pro MB) schätzen, die neuen und/oder alten Objekte (z. B. pro MB) markieren und Kompaktierung durchführen. Speicher-Manager 114 kann Schätzungen für jedes Ereignis auf der Grundlage verschiedener Faktoren, unter anderem Heap-Zustand (z. B. Prozentsatz fragmentiert, konsistent, korrumpiert), Prozentsatz von festgeschriebenem Heap frei, reserviert, Zuteilungsgeschwindigkeit, Zuteilungslast und Speicherbereinigungs-Markierungsgeschwindigkeit (z. B. auf der Grundlage bisheriger Geschwindigkeiten).
  • Speicher-Manager 114 kann beispielsweise den Task-Scheduler 110 anfragen, die nächsten Leerlaufzeit(en) zu bestimmen und auf der Grundlage einer Zuteilungsgeschwindigkeit bestimmen, wie viel Speicher durch die nächste(n) Leerlaufzeit(en) zugeteilt werden wird. So kann Speicher-Manager 114 beispielsweise bestimmen, dass x MB zugeteilt worden sind, und dass eine aktuelle Zuteilungsgeschwindigkeit bei y MB/ms liegt. Kommt die nächste Leerlaufzeit dann in 3 ms, wird geschätzt, dass x + 3y MB von der nächsten Leerlaufzeit zugeteilt wird. Sobald die Zuteilung bestimmt wurde, kann Speicher-Manager 114 bestimmen, wie viel Zeit jeder Ereignistyp in Anspruch nimmt.
  • Speicherbereinigungsereignisse können in vorab festgelegte Ereignisaufgaben unterteilt werden, wobei es sich bei jeder Ereignisaufgabe um einen Abschnitt des Ereignisses handelt, das eine Reihe von Teilaufgaben oder Befehlen umfasst. Jede Aufgabe wird so erzeugt, dass sie in einer vorab festgelegten Zeitdauer ausgeführt wird. Wird beispielsweise geschätzt, dass ein Speicherbereinigungsereignis wie beispielsweise Markieren eines alten Objektes 400 ms dauern wird, dann kann das Ereignis in acht Aufgaben zu 50 ms (oder einer anderen vorab festgelegten Dauer) unterteilt werden. System 100 kann Aufgaben für ein Ereignis auf der Grundlage einer vorab festgelegten Menge an Zeit erzeugen. So können beispielsweise jede Aufgabe 10 ms, 25 ms, 50 ms, usw. sein.
  • Bei einigen Aspekten kann die geschätzte Zuteilung von Speicherplatz auf der Grundlage einer Zuteilung von Speicherplatz über mehrere zukünftige geplante Leerlaufzeiten basieren. So kann Speicher-Manager 114 beispielsweise bestimmen, dass eine vorher erzeugte Speicherbereinigungsaufgabe 212 zurückgegeben wurde, nachdem sie Task-Scheduler 110 über einen Leerlaufzeitraum 204 zugestellt wurde. Anschließend kann Speicher-Manager 114 die Speicherzuteilung für einen sich anschließenden Leerlaufzeitraum 206 erneut berechnen. Zusätzlich oder alternativ dazu kann Speicher-Manager 114 bestimmen, dass ein Speicherbereinigungsereignis in einem einzelnen Leerlaufzeitraum nicht fertiggestellt werden kann. Demgemäß kann Speicher-Manager 114 eine geschätzte Anzahl von Leerlaufzeiträumen zum Fertigstellen des Ereignisses bestimmen und die Speicherzuteilung für die Anzahl von Leerlaufzeiträumen bestimmen.
  • Unter weiterer Bezugnahme auf 3 wählt System 100 (z. B. Task-Scheduler 110) ein einer Vielzahl von Speicherbereinigungsereignissen auf der Grundlage der bestimmten zukünftigen Leerlaufzeiträume und der geschätzten Speicherzuteilung (306) aus. Bei einer oder mehreren Implementierungen wird ein Speicherbereinigungsereignis nur ausgewählt, wenn zunächst bestimmt wird, dass die geschätzte Zuteilung von Speicherplatz einen Grenzwert der Speicherzuteilung, beispielsweise in dem bestimmten zukünftigen Leerlaufzeitraum erfüllt. Der Grenzwert kann auf einer Gesamtzuteilung, einer Zuteilungsgeschwindigkeit, der Zuteilung von neuen oder alten Objekten usw. basieren. Bei einer oder mehreren Implementierungen kann Task-Scheduler 110 die Typen der Speicherbereinigungsereignisse in einer Ereigniswarteschalge analysieren und die Ereignisse (oder Aufgaben für die Ereignisse) zeitlich planen, um die Leistung des Systems zu maximieren. Task-Scheduler 110 (oder z. B. ein Speicherbereinigungselement, das mit den Komponenten von Task-Scheduler 110 angepasst ist) kann ein Ereignis auswählen, das in einem einzigen Leerlaufzeitraum oder über eine Mindestanzahl von Leerlaufzeiträumen für die Ereignisse in der Warteschlange (z. B. als eine Reihe von Aufgaben) fertiggestellt wird. Task-Scheduler 110 kann Aufgaben für ein Ereignis planen, das die meiste Speicherplatzoptimierung (z. B. über Speicherplatzbereinigung) in der kürzesten Zeitdauer oder der kleinsten Anzahl von Aufgabenabschnitten liefert.
  • Bei einer oder mehreren Implementierungen kann Task-Scheduler 110 ein Speicherbereinigungsereignis auf der Grundlage von einen oder mehreren vorab festgelegten Regeln auswählen. So kann beispielsweise eine Speicherbereinigung einer neuen Generation ausgewählt werden, wenn die neue Generation nahezu voll ist (z. B. mehr als zu 90 Prozent voll ist). Ein aufsteigendes Markieren von Objekten (z. B. wird eine Anzahl von Objekten in Abschnitte zerlegte Aufgaben einer vorab festgelegten zeitlichen Dauer markiert) kann initiiert werden, wenn eine alte Generation von Objekten nahezu voll ist (z. B. wenn Objekte, die zu mehr als einer vorab festgelegten Zeit vor einer aktuellen Zeit erstellt wurden, zu mehr als 90 Prozent vollständig sind). Sich anschließende Markierungsschritte können ausgewählt werden, wenn die Markierung in einem früheren Leerlaufzeitraum gestartet wurde. Eine vollständige Speicherbereinigung kann initiiert und geplant werden, wenn der Task-Scheduler 110 bestimmt, dass ausreichend Leerlaufzeit für die Fertigstellung der Speicherbereinigung ohne ein Herbeiführen von Latenz zur Verfügung steht.
  • Bei einigen Aspekten kann das Ereignis, wenn es sich bei dem ausgewählten Speicherbereinigungsereignis um ein Objektmarkierungsereignis handelt, in eine Vielzahl von aufsteigenden Objektmarkierungsaufgaben zerlegt werden, wobei eine erste der aufsteigenden Objektmarkierungsaufgaben so geplant wird, dass sie zuerst während des vorstehend beschriebenen zukünftigen Leerlaufzeitraums durchgeführt wird. Wie vorstehend beschrieben, kann die Vielzahl der aufsteigenden Objektmarkierungsaufgaben so geplant werden, dass sie zwischen zwei verschiedenen Leerlaufzeiträumen liegt.
  • Demgemäß kann eine Zeitschätzung zum Fertigstellen der Vielzahl von vorab festgelegten Speicherbereinigungsereignissen auf der Grundlage der geschätzten Speicherzuteilung und einem Speicherbereinigungsereignis bestimmt werden, das auf der Grundlage einer jeweiligen Zeitschätzung ausgewählt wird, die dem ausgewählten Speicherbereinigungsereignis und einer Zeitdauer des zukünftigen Leerlaufzeitraums entspricht.
  • Unter weiterer Bezugnahme auf 3 plant System 100 (z. B. Task-Scheduler 110) die Durchführung des ausgewählten Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums (308). Zusätzlich oder alternativ dazu kann eine Gruppe von Aufgaben während eines Leerlaufzeitraums angesetzt werden. So kann Task-Scheduler 110 beispielsweise bestimmen, dass der zukünftige Leerlaufzeitraum einer Pause in der Wiederhabe von Frames für die eine oder mehreren Software-Anwendungen entspricht (z. B. einer langen Leerlaufzeit). Demgemäß kann Task-Scheduler 110 die Durchführung der Gruppe der Softwarespeicherbereinigungsaufgaben für während des zukünftigen Leerlaufzeitraums planen, wobei die Gruppe wenigstens einen Abschnitt des ausgewählten Softwarespeicherbereinigungsereignisses umfasst. In diesem Beispiel ist eine Zeitdauer der Gruppe größer als eine Zeitdauer eines einzelnen jeweiligen Frames (z. B. größer als 16,6 ms).
  • Anschließend führt System 100 das ausgewählte Software-Speicherbereinigungsereignis während des zukünftigen Leerlaufzeitraums (310) durch. Wie vorstehend beschrieben, kann das Ereignis als eine Reihe von Aufgaben (z. B. jedes mit einer vorab festgelegten Zeitdauer) durchgeführt werden. In einigen Fällen kann das Ereignis nur eine Aufgabe sein oder einige wenige Aufgaben, die in demselben Leerlaufzeitraum durchgeführt werden können. Der zukünftige Leerlaufzeitraum kann jedoch durchgehend sein oder sich über mehrere Frames (z. B. zwischen Systemaufgaben und dem Ende eines jeden Frames) erstrecken.
  • Viele der vorstehend beschriebenen exemplarischen Prozesse 200, 300 und 400, sowie dazugehörige Merkmale und Anwendungen können als Softwareprozesse implementiert werden, die als ein Satz von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind. Wenn diese Anweisungen von einer oder mehreren Verarbeitungseinheit(en) ausgeführt werden (z. B. ein oder mehrere Prozessoren, Prozessorkerne oder sonstige Prozessoren), veranlassen sie die Verarbeitungseinheit(en) dazu, die in den Anweisungen angegebenen Handlungen auszuführen. Beispiele computerlesbarer Medien beinhalten unter anderem CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, EPROMs, usw. Das computerlesbare Medium beinhaltet keine Trägerwellen und elektronischen Signale, die drahtlos oder über drahtgebundene Verbindungen gesendet werden.
  • Der Begriff „Software” soll ggf. Firmware beinhalten, die sich in einem Nur-Lese-Speicher oder Anwendungen befindet, die auf der magnetischen Speichereinrichtung gespeichert sind, die zur Verarbeitung durch einen Prozessor in den Speicher gelesen werden können. Bei einigen Implementierungen können auch mehrere Software-Merkmale der gegenständlichen Offenbarung als Teilbestandteile eines größeren Programms implementiert sein, während sie unverwechselbare Software-Merkmale der gegenständlichen Offenbarung bleiben. Bei einigen Implementierungen können ebenfalls mehrere Software-Merkmale als separate Programme implementiert werden. Schließlich fällt jede beliebige Kombination von separaten Programmen, die gemeinsam ein hierin beschriebenes Software-Merkmal implementieren, in den Schutzumfang der gegenständlichen Offenbarung. Bei einigen Implementierungen definieren die Softwareprogramme, wenn sie installiert werden, um ein oder mehrere elektronische Systeme zu betreiben, einen oder mehrere spezifische Maschinenimplementierungen, die den Betrieb der Software ausführen und durchführen.
  • Ein Computerprogramm (das auch als Programm, Software, Softwareanwendung, Modul, Softwaremodul, Script oder Code bezeichnet werden kann) kann in jeder Form von Programmiersprache, darunter auch in kompilierten oder interpretierten Sprachen oder in deklarativen oder prozeduralen Sprachen geschrieben und in beliebiger Form, wie z. B. als allein lauffähiges Programm oder als Modul, Komponente, Subroutine, Objekt oder als eine andere für den Einsatz in einer Computerumgebung geeignete Einheit bereitgestellt werden. Ein Computerprogramm kann, muss jedoch nicht einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten enthält (z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind), in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien (z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern). Ein Computerprogramm kann auf einem Computer oder auf mehreren Computer bereitgestellt und ausgeführt werden, die sich an einem Standort oder auf mehreren Standorten verteilt befinden und über ein Kommunikationsnetzwerk miteinander verbunden sind.
  • 4 ist ein Diagramm, das ein exemplarisches elektronisches System 400 zur Verwendung im Zusammenhang mit Planen von Software-Speicherbereinigung während Prozessorleerlaufzeiten gemäß einem oder mehreren Aspekten der gegenständlichen Technologie veranschaulicht. Bei dem elektronischen System 400 kann es sich um eine Datenverarbeitungseinrichtung zur Ausführung von zum Betrieb der Datenverarbeitungseinrichtung 100 gehörender Software oder einen oder mehrere Abschnitte oder Schritte von Prozess 300 oder Komponente und Prozesse handeln, die von den 1 bis 3 bereitgestellt werden. Bei verschiedenen Implementierungen kann das elektronische System 400 repräsentativ zu System 100 sein. Dementsprechend kann das elektronische System 400 oder System 100 ein Personalcomputer oder eine Mobilvorrichtung wie beispielsweise ein Tablet-Computer, ein Laptop, ein Smartphone, ein PDA oder einen sonstigen Touch-Screen oder ein Fernseher mit einem oder mehreren darin eingebetteten oder daran angeschlossenen Prozessoren oder jede andere Art von computerbezogener elektronischer Vorrichtung mit Drahtloskonnektivität sein.
  • Das elektronische System 400 kann verschiedene Arten von computerlesbaren Medien und Schnittstellen für verschiedene andere Typen von computerlesbaren Medien beinhalten. In dem dargestellten Beispiel umfasst das elektronische System 400 einen Bus 408, (eine) Prozessoreinheit(en) 412, einen Systemspeicher 404, einen Festwertspeichert (ROM) 410, ein permanentes Speicherwerk 402, eine Eingabegeräteschnittstelle 414, ein Ausgabeschnittstellengerät 406 und eine oder mehrere Netzwerkschnittstellen 416. Bei einigen Implementierungen kann das elektronische System 400 andere Datenverarbeitungsgeräte oder Schaltungen für den Betrieb der verschiedenen vorstehend beschriebenen Komponenten und Prozesse beinhalten oder in diesen integriert sein.
  • Bus 408 stellt in seiner Gesamtheit alle System-, Peripherie- und Chipsatz-Busse, die zahlreiche interne Geräte des elektronischen Systems 400 kommunikativ verbinden, dar. So stellt beispielsweise Bus 408 die Datenübertragungsverbindung zu der/den Verarbeitungseinheit(en) 412, ROM 410, Systemspeicher 404 und dem permanenten Speichergerät 402 her.
  • Aus diesen verschiedenen Speichereinheiten ruft/rufen der/die Verarbeitungseinheit(en) 412 Anweisungen zum Ausführen und Verarbeiten der Daten auf, um die Prozesse der gegenständlichen Technologie auszuführen. Bei der/den Verarbeitungseinheit(en) kann es sich um einen einzelnen Prozessor oder einen Multikernprozessor mit unterschiedlichen Implementierungen handeln.
  • Festwertspeicher (ROM) 410 speichert statische Daten und Anweisungen, die von der einen oder den mehreren Verarbeitungseinheit(en) 412 und von anderen Modulen des elektronischen Systems benötigt werden. Das permanente Speichergerät 402 ist zudem ein lesbares und beschreibbares Speichergerät. Dieses Gerät ist eine nicht-flüchtige Speichereinheit, die Anweisungen und Daten selbst in einem ausgeschalteten Zustand des elektronischen Systems 400 speichert. Manche Implementierungen der gegenständlichen Offenbarung benutzen ein Massenspeichergerät (zum Beispiel eine magnetische oder optische Platte und deren entsprechendes Plattenlaufwerk) als permanentes Speichergerät 402.
  • Andere Implementierungen verwenden ein Wechselspeichergerät (beispielsweise eine Diskette, ein Flash-Laufwerk und dessen entsprechendes Plattenlaufwerk) als Permanentspeicherelement 402. Auf gleiche Weise wie das permanente Speichergerät 402 ist Systemspeicher 404 ein Read-and-Write-Speichergerät. Anders jedoch als Speichergerät 402 ist Systemspeicher 404 ein flüchtiger Read-and-Write-Speicher, wie beispielsweise ein Random Access Memory. Systemspeicher 404 speichert einige der Anweisungen und Daten, die der Prozessor während seiner Laufzeit benötigt. Bei einigen Implementierungen werden die Prozesse der gegenständlichen Offenbarung in dem Systemspeicher 404, dem permanenten Speichergerät 402 und/oder dem ROM 410 gespeichert. Aus diesen verschiedenen Speichereinheiten ruft/rufen Verarbeitungseinheit(en) 412 Anweisungen zum Ausführen und Verarbeiten der Daten auf, um die Prozesse einiger Implementierungen auszuführen.
  • Bus 408 ist ebenfalls mit den Ein- und Ausgabegerätschnittstellen 414 und 406 verbunden. Mit Eingabegeräteschnittstelle 414 kann der Benutzer Informationen übertragen und Befehle an das elektronische System auswählen. Eingabegeräte, die mit Eingabegeräteschnittstellen 414 verwendet werden, beinhalten beispielsweise alphanumerische Tastaturen und Zeigegeräte (auch „Cursor-Kontrollgeräte” genannt). Ausgabegeräteschnittstellen 406 ermöglichen beispielsweise die Anzeige von Bildern, die von dem elektronischen System 400 erzeugt werden. Ausgabegeräte, die mit Ausgabegerätschnittstelle 406 verwendet werden, umfassen beispielsweise Drucker und Anzeigegeräte, wie beispielsweise Kathodenstrahlröhren-(CRT-) oder Flüssigkristallanzeigen (LCD). Einige Implementierungen beinhalten Vorrichtungen wie einen Touchscreen, die als Eingabe- und Ausgabegeräte fungieren.
  • Schließlich verbindet Bus 408, wie dies in 4 dargestellt ist, auch das elektronische System 400 mit einem Netzwerk (nicht dargestellt) über Netzwerkschnittstellen 416. Zu Netzwerkschnittstellen 416 können beispielsweise ein Wireless Access Point (drahtloser Zugangspunkt) (z. B. Bluetooth oder Wifi) oder eine Funkschaltung zur Verbindung mit einem drahtlosen Zugangspunkt gehören. Zu Netzwerkschnittstellen 416 können auch Hardware (z. B. Ethernet-hardware) zum Verbinden des Computers mit einem Teil eines Netzwerks von Computern wie beispielsweise einem Lokalnetz („LAN”), einem Weitverkehrsnetz („WAN”), einem drahtlosen LAN oder einem Intranet oder einem Netzwerk aus Netzwerken wie beispielsweise dem Internet gehören. Es können beliebige oder alle Komponenten des elektronischen Systems 400 mit der gegenständlichen Technologie verwendet werden.
  • Diese vorstehend beschriebenen Funktionen können in einer Computersoftware, Firmware oder Hardware implementiert werden. Die Verfahren können unter Verwendung eines oder mehrerer Computerprogrammprodukte implementiert werden. Programmierbare Prozessoren und Computer können in mobilen Geräten integriert oder darin angeordnet sein. Die Prozesse und logischen Abläufe können von einem oder mehreren programmierbaren Prozessoren und von einer oder mehreren programmierbaren logischen Schaltungsanordnungen durchgeführt werden. Universal- und Spezialcomputergeräte und Speichervorrichtungen können über Datenübertragungsnetzwerke miteinander verbunden werden.
  • Zu einigen Implementierungen gehören elektronische Komponenten, wie beispielsweise Mikroprozessoren, Speichervorrichtungen und Speicher, die Computerprogrammanweisungen auf einem maschinenlesbaren oder computerlesbaren Medium (alternativ bezeichnet als computerlesbare Speichermedien, maschinenlesbare Medien oder maschinenlesbare Speichermedien) speichern. Zu einigen solcher Beispiele solcher computerlesbaren Medien gehören RAM, ROM, schreibgeschützte CDs (CD-ROM), beschreibbare CDs (CD-R), überschreibbare CDs (CD-RW), schreibgeschützte DVDs (z. B., DVD-ROM, Dual-Layer DVD-ROM), eine Reihe verschiedener beschreibbare oder überschreibbare DVDs (z. B. DVD-RAM, DVD-RW, DVD + RW, usw.), Flash-Speicher (z. B. SD-Karten, Mini-SD-Karten, Mikro-SD-Karten, usw.), magnetische und/oder Solid-State-Festplatten, schreibgeschützte und beschreibbare Blu-Ray® Discs, Ultra Density Optical Discs, beliebige andere optische oder magnetische Medien und Disketten. Die computerlesbaren Medien können ein Computerprogramm speichern, das von mindestens einer Verarbeitungseinheit ausführbar ist, und umfassen Sätze von Anweisungen zum Ausführen verschiedener Operationen. Zu Beispielen für Computerprogramme oder Computercodes gehören Maschinencodes, die beispielsweise von einem Compiler erzeugt werden, und Dateien, die Hochsprachen-Codes beinhalten, die durch einen Computer, eine elektronische Komponente oder einen Interpreter verwendenden Mikroprozessor ausgeführt werden.
  • Obgleich sich die vorstehende Betrachtung in erster Linie auf Mikroprozessoren oder Mehrkern-Prozessoren bezieht, die die Software ausführen, werden einige Implementierungen durch eine oder mehrere integrierte Schaltungen ausgeführt, beispielsweise durch anwendungsspezifische integrierte Schaltungen (ASICs) oder durch im Feld programmierbare Gate-Arrays (FPGAs). Bei einigen Implementierungen führen derartige integrierte Schaltungen Anweisungen aus, die auf der Schaltung selbst gespeichert werden.
  • Wie in dieser Spezifikation und jeglichen Ansprüchen dieser Anmeldung verwendet, beziehen sich die Begriffe „Computer”, „Server”, „Prozessor” und „Speicher” alle auf elektronische oder sonstige technologische Geräte. Diese Begriffe schließen Menschen oder Menschengruppen aus. Zum Zwecke der Spezifikation bedeuten die Begriffe Anzeigen oder Anzeige das Anzeigen auf einem elektronischen Gerät. In ihrer in dieser Spezifikation und jeglichen Ansprüchen dieser Anmeldung verwendeten Form, beziehen sich die Begriffe „computerlesbares Medium” und „computerlesbare Medien” ausschließlich auf materielle, physische Objekte, die Daten in einer von einem Computer lesbaren Form speichern. Diese Begriffe schließen alle drahtlosen Signale, Signale, die über drahtgebundene Systeme heruntergeladen werden, und alle anderen ephemeren Signale aus.
  • Um Interaktionen mit einem Benutzer zu ermöglichen, können die in dieser Spezifikation beschriebenen Implementierungen des Gegenstands zum Anzeigen von Informationen auf einem Computer mit einem Anzeigegerät wie z. B. einem CRT-Monitor (Kathodenstrahlröhren) oder LCD-Monitor (Flüssigkristallanzeige) und einer Tastatur sowie einem Zeigegerät (z. B. Maus oder Trackball) implementiert werden, mit denen der Benutzer den Computer bedienen kann. Darüber hinaus können andere Geräte verwendet werden, um die Interaktion mit einem Benutzer zu ermöglichen; zum Beispiel kann es sich bei der Rückmeldung an den Benutzer um jegliche Art von sensorischer Rückmeldung, wie z. B. visuelle, akustische oder taktile Rückmeldungen, handeln; auch die Eingaben des Benutzers können in beliebiger Form, d. h. auch akustisch, sprachlich oder taktil, empfangen werden. Außerdem kann ein Computer durch das Senden von Dokumenten an und das Empfangen von Dokumenten von einem Gerät, das vom Benutzer verwendet wird, mit einem Benutzer interagieren, beispielsweise durch das Senden von Webseiten an einen Webbrowser auf dem Client-Gerät des Benutzers in Reaktion auf die vom Webbrowser empfangenen Anfragen.
  • Die in dieser Spezifikation beschriebenen Ausführungsformen des Gegenstandes können in einem Datenverarbeitungssystem implementiert werden, das eine Backend-Komponente wie z. B. einen Datenserver oder eine Middleware-Komponente, wie z. B. einen Anwendungsserver oder eine Frontend-Komponente, wie z. B. einen Client-Computer mit einer grafischen Benutzeroberfläche, oder eine beliebige Kombination einer oder mehrerer der besagten Backend-, Middleware- oder Frontend-Komponenten oder einen Webbrowser beinhaltet, durch den ein Benutzer mit einer in dieser Spezifikation beschriebenen Implementierung des Gegenstandes interagieren kann. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation, Wie z. B. ein Kommunikationsnetzwerk, miteinander verbunden sein. Beispiele für Kommunikationsnetzwerke beinhalten ein lokales Netzwerk („LAN”) und ein Großraumnetzwerk („WAN”), ein Inter-Netzwerk (z. B. das Internet) und Peer-to-Peer-Netzwerke (z. B. ad hoc Peer-to-Peer-Netzwerke).
  • Das Computersystem kann Clients und Server umfassen. Ein Client und ein Server befinden sich im Allgemeinen entfernt voneinander und interagieren typischerweise über ein Kommunikationsnetzwerk. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computer laufen und die eine Client-Server-Beziehung zueinander aufweisen. In einigen Ausführungsformen überträgt ein Server Daten (z. B. eine HTML-Seite) an ein Client-Gerät (z. B. zum Anzeigen von Daten für und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Client-Gerät interagiert). Daten, die am Client-Gerät erzeugt werden (z. B. ein Ergebnis der Benutzerinteraktion) können vom Benutzergerät auf dem Server empfangen werden.
  • Den Fachleuten wird ersichtlich sein, dass die verschiedenen hierin beschriebenen veranschaulichenden Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen als elektronische Hardware, Computer-Software oder als Kombinationen beider implementiert sein können. Um diese Austauschbarkeit von Hardware und Software zu veranschaulichen, wurden vorstehend verschiedene veranschaulichende Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen allgemein im Hinblick auf ihre Funktionalität beschrieben. Ob eine solche Funktionalität als Hardware oder Software implementiert wird, hängt von der bestimmten Anwendung und Designbeschränkungen ab, die dem Gesamtsystem auferlegt sind. Fachleute auf dem Gebiet der Technik können die beschriebenen Funktionen auf verschiedene Art und Weise für jede bestimmte Anwendung implementieren. Verschiedene Komponenten und Blöcke können auf verschiedene Art und Weise (z. B. in einer anderen Reihenfolge oder auf andere Weise unterteilt) angeordnet werden, wobei in keinem Fall vom Schutzumfang der gegenständlichen Technologie abgewichen wird.
  • Es ist davon auszugehen, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den offenbarten Prozessen eine Veranschaulichung von exemplarischen Herangehensweisen darstellt. Auf der Grundlage von Ausgestaltungspräferenzen versteht es sich, dass die spezifische Reihenfolge oder Hierarchie von Schritten in den Prozessen umgeändert werden kann. Einige der Schritte können gleichzeitig durchgeführt werden. Die beigefügten Ansprüche zu den Verfahren stellen Elemente der verschiedenen Schritte in einer beispielhaften Reihenfolge dar und sind nicht als im die spezifische dargestellte Reihenfolge oder Hierarchie beschränkenden Sinne zu erachten.
  • Die vorstehende Beschreibung wird bereitgestellt, um eine Person mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik dazu zu befähigen, die verschiedenen hierin beschriebenen Aspekte umzusetzen. Die vorstehende Beschreibung liefert verschiedene Beispiele der gegenständlichen Technologie und die gegenständliche Technologie ist nicht auf diese Beispiele begrenzt. Den Personen mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik sind ohne Weiteres verschiedene Modifikationen dieser Aspekte ersichtlich und die vorliegend definierten allgemeinen Prinzipien können auf andere Aspekte angewendet werden. Daher sind die Ansprüche nicht im auf die hierin dargelegten Aspekte beschränkenden Sinne zu erachten, sondern sollen dem vollen Schutzumfang entsprechen, was ferner mit der Sprache der Ansprüche übereinstimmt, worin ein Bezug auf ein Element im Singular nicht „ein und nur ein” bedeuten soll, es sei denn, dies ist speziell so angegeben, sondern vielmehr „ein oder mehrere”. Sofern nicht ausdrücklich anders angegeben, bezieht sich der Begriff „einige” auf eines oder mehrere. Pronomen im maskulinen (z. B. sein) beinhalten auch den weiblichen und sächlichen Genus (z. B. ihr und sein) und umgekehrt. Überschriften und Zwischenüberschriften, falls vorhanden, werden nur der Einfachheit halber verwendet und schränken die Erfindung nicht ein.
  • In seiner hierin verwendeten Form kann der Begriff Website jegliches Merkmal einer Website, einschließlich einer oder mehrerer Webpages, eines oder mehrerer Server, die zum Hosten oder Speichern von webverwandtem Inhalten verwendet werden, und Ähnliches umfassen. Demgemäß kann der Begriff Website austauschbar mit den Begriffen Webpage und Server verwendet werden. Die Verben ”konfiguriert, um zu”, ”eingerichtet, um zu” und ”programmiert, um zu” implizieren keinerlei bestimmte materielle oder immaterielle Modifizierung eines Gegenstandes, sondern sind vielmehr für ihren gleichwertigen Austausch bei der Verwendung gedacht. So kann beispielsweise ein Prozessor, der zum Überwachen und Steuern einer Operation oder einer Komponente konfiguriert ist, auch zum Überwachen und Steuern einer Operation oder einer Komponente programmiert oder zum Überwachen und Steuern einer Operation oder einer Komponente eingerichtet sein. Auf gleiche Weise kann ein Prozessor, der zum Ausführen eines Codes konfiguriert ist, als ein Prozessor ausgelegt sein, der zum Ausführen eines Codes programmiert oder zum Ausführen eines Codes eingerichtet ist.
  • Eine Phrase, wie beispielsweise ein „Aspekt” bedeutet nicht, dass der Aspekt für die gegenständliche Technologie von wesentlicher Bedeutung ist oder dass der Aspekt für alle Konfigurationen der gegenständlichen Technologie gilt. Eine sich auf einen Aspekt beziehende Offenbarung kann auf alle, oder auf eine oder mehrere Konfigurationen zutreffen. Ein Aspekt kann ein oder mehrere Beispiele bereitstellen. Eine Phrase wie beispielsweise ein Aspekt kann sich auf einen oder auf mehrere Aspekte und umgekehrt beziehen. Eine Phrase wie eine „Ausführungsform” impliziert nicht, dass solch eine Ausführungsform für die gegenständliche Technologie von wesentlicher Bedeutung ist oder dass solch eine Ausführungsform für alle Konfigurationen der gegenständlichen Technologie gilt. Eine Offenbarung, die sich auf eine Ausführungsform bezieht, kann auf alle Ausführungsformen oder eine oder mehrere Ausführungsformen zutreffen. Eine Ausführungsform kann eine oder mehrere Beispiele bereitstellen. Eine Phrase wie beispielsweise eine „Ausführungsform” kann sich auf eine oder mehrere Ausführungsformen beziehen und umgekehrt. Eine Phrase, wie beispielsweise eine „Konfiguration” bedeutet nicht, dass eine solche Konfiguration für die gegenständliche Technologie von wesentlicher Bedeutung ist, oder dass solche Konfigurationen für alle Konfigurationen der gegenständlichen Technologie gelten. Eine Offenbarung, die sich auf eine Konfiguration bezieht, kann auf alle, oder auf eine oder mehrere Konfigurationen zutreffen. Eine Konfiguration kann eine oder mehrere Beispiele bereitstellen. Eine Phrase wie beispielsweise eine „Konfiguration” kann sich auf eine oder mehrere Konfigurationen und umgekehrt beziehen.
  • In seiner hierin verwendeten Form bedeutet das Wort „Beispiel” „als ein Beispiel oder eine Veranschaulichung dienend”. Jeglicher Gesichtspunkt oder Entwurf, der hierin als „Beispiel” beschrieben ist, ist nicht notwendigerweise als vorzugsweise oder vorteilhaft gegenüber sonstigen Gesichtspunkten oder Entwürfen aufzufassen.
  • Alle struktur- und funktionsbezogenen Entsprechungen der Elemente der verschiedenen hierin in der Offenbarung beschriebenen Aspekte, die bekannt sind oder in der Folge den Personen mit der gewöhnlichen Erfahrung auf dem Gebiet der Technik bekannt werden, sind hierin ausdrücklich mittels Verweis enthalten und gelten als durch die Ansprüche erfasst. Ferner sind keine hierin offenbarten Informationen für die Öffentlichkeit gedacht, ungeachtet dessen, ob eine solche Offenbarung ausdrücklich in den Ansprüchen erwähnt wird. Kein beanspruchtes Element ist gemäß den Bestimmungen von 35 U.S.C. § 112, Abschnitt 6, auszulegen, es sei denn, das Element wird ausdrücklich unter Verwendung der Phrase „Mittel für” (means for), oder, im Falle eines beanspruchten Verfahrens, unter Verwendung der Phrase „Schritt für” verwendet. Ferner gelten, in dem Ausmaß, in dem die Begriffe „beinhalten”, „haben” oder Ähnliches in der Beschreibung oder den Ansprüchen verwendet werden, solche Begriffe auf ähnliche Weise einschließend wie der Begriff „aufweisen”, da „aufweisen” ausgelegt wird, wenn es als Überleitungswort in einem Anspruch verwendet wird.

Claims (20)

  1. Computerimplementiertes Verfahren, welches das Folgende umfasst: Bestimmen eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden; schätzen, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die einen oder die mehreren Software-Anwendungen; auswählen einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung; planen des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist; und durchführen des ausgewählten Software-Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums.
  2. Computerimplementiertes Verfahren nach Anspruch 1, worin das Auswählen aufweist: Bestimmen einer Zeitschätzung zum Fertigstellen eines jeden der Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage der geschätzten Speicherzuteilung; und Auswählen des ausgewählten Software-Speicherbereinigungsereignisses auf der Grundlage einer jeweiligen Zeitschätzung, die dem ausgewählten Software-Speicherbereinigungsereignis und einer Zeitdauer des zukünftigen Leerlaufzeitraums entspricht.
  3. Computerimplementiertes Verfahren nach Anspruch 1, das ferner das Folgende umfasst: Bestimmen einer ersten Frame-Wiedergabeanfangszeit und einer zweiten Frame-Wiedergabezeit auf der Grundlage einer Frame-Geschwindigkeit und einer oder mehrerer Software-Anwendungsaufgaben, worin der zukünftige Leerlaufzeitraum zwischen der ersten Frame-Wiedergabeanfangszeit und der zweiten Frame-Wiedergabeanfangszeit liegt.
  4. Computerimplementiertes Verfahren nach Anspruch 1, worin das ausgewählte Software-Speicherbereinigungsereignis eine Gruppe von Speicherbereinigungsaufgaben umfasst, wobei das Verfahren des Weiteren das Folgende umfasst: bestimmen, dass der zukünftige Leerlaufzeitraum einer Pause bei der Wiedergabe von Frames für die eine oder mehreren Software-Anwendungen entspricht; und planen, dass die Gruppe der Software-Speicherbereinigungsaufgaben während des zukünftigen Leerlaufzeitraums durchzuführen sind, wobei eine Zeitdauer der Gruppe größer ist als die Zeitdauer eines jeweiligen Frames.
  5. Computerimplementiertes Verfahren nach Anspruch 1, weiter umfassend: bestimmen, dass die geschätzte Speicherplatzzuteilung eine Grenzwertzuteilung von Speicherplatz in dem zukünftigen Leerlaufzeitraum erfüllt.
  6. Computerimplementiertes Verfahren nach Anspruch 5, worin Schätzen der Speicherzuteilung Bestimmen einer aktuellen Speicherzuteilungsgeschwindigkeit umfasst, und worin Bestimmen, dass die geschätzte Speicherzuteilung eine Schwellenwertspeicherzuteilung erfüllt auf der Grundlage der aktuellen Speicherzuteilungsgeschwindigkeit geschieht.
  7. Computerimplementiertes Verfahren nach Anspruch 1, worin die geschätzte Speicherzuteilung auf der Grundlage einer Speicherzuteilung über mehrere zukünftige geplante Leerlaufzeiten geschieht.
  8. Computerimplementiertes Verfahren nach Anspruch 1, worin die Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen Objektmarkierung, Fertigstellung und Speicherreinigung umfasst.
  9. Computerimplementiertes Verfahren nach Anspruch 8, worin das ausgewählte Software-Speicherbereinigungsereignis ein Objektmarkierungsereignis ist und das Verfahren ferner aufweist: fragmentieren des Objektmarkierungsereignisses in eine Vielzahl von aufsteigenden Objektmarkierungsaufgaben, wobei eine erste der aufsteigenden Objektmarkierungsaufgaben für die Durchführung zunächst während des zukünftigen Leerlaufzeitraums geplant wird.
  10. Computerimplementiertes Verfahren nach Anspruch 9, worin die Vielzahl von aufsteigenden Objektmarkierungsaufgaben für eine Unterteilung zwischen zwei oder mehreren verschiedenen Leerlaufzeiten geplant wird.
  11. System, welches das Folgende umfasst: einen oder mehrere Prozessor(en); und einen Speicher, einschließlich Anweisungen, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren zum Ermöglichen der folgenden Schritte veranlasst: Bestimmen eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden; Schätzen, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die einen oder die mehreren Software-Anwendungen; Auswählen einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung; Planen des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist; und Durchführen des ausgewählten Software-Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums.
  12. System nach Anspruch 11, worin die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren zum Durchführen der folgenden Schritte veranlassen: bestimmen einer Zeitschätzung zum Fertigstellen eines jeden der Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage der geschätzten Speicherzuteilung; und auswählen des ausgewählten Software-Speicherbereinigungsereignisses auf der Grundlage einer wiederholten Zeitschätzung, die dem ausgewählten Software-Speicherbereinigungsereignis und einer Zeitdauer des zukünftigen Leerlaufzeitraums entspricht.
  13. System nach Anspruch 11, worin die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren zum Durchführen der folgenden Schritte veranlassen: Bestimmen einer ersten Frame-Wiedergabeanfangszeit und einer zweiten Frame-Wiedergabezeit auf der Grundlage einer Frame-Geschwindigkeit und einer oder mehrerer Software-Anwendungsaufgaben, worin der zukünftige Leerlaufzeitraum zwischen der ersten Frame-Wiedergabeanfangszeit und der zweiten Frame-Wiedergabeanfangszeit liegt.
  14. System nach Anspruch 11, worin das ausgewählte Speicherbereinigungsereignis eine Gruppe von Speicherbereinigungsaufgaben umfasst, und worin die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren zum Ermöglichen folgender Schritte veranlassen: bestimmen, dass der zukünftige Leerlaufzeitraum einer Pause bei der Wiedergabe von Frames für die eine oder mehreren Software-Anwendungen entspricht; und planen, dass die Gruppe der Software-Speicherbereinigungsaufgaben während des zukünftigen Leerlaufzeitraums durchzuführen sind, wobei eine Zeitdauer der Gruppe größer ist als die Zeitdauer eines jeweiligen Frames.
  15. System nach Anspruch 11, worin die Anweisungen, wenn sie durchgeführt werden, ferner den einen oder die mehreren Prozessoren veranlassen, die folgenden Schritte zu ermöglichen: bestimmen, dass die geschätzte Speicherzuteilung eine Grenzwertzuteilung von Speicherplatz in dem zukünftigen Leerlaufzeitraum erfüllt, worin Schätzen der Zuteilung von Speicherplatz Bestimmen einer aktuellen Geschwindigkeit der Speicherzuteilung umfasst, und worin Bestimmen, dass die geschätzte Speicherzuteilung eine Grenzwertzuteilung von Speicherplatz in dem zukünftigen Leerlaufzeitraum erfüllt, auf der Grundlage der aktuellen Geschwindigkeit der Speicherzuteilung geschieht.
  16. System nach Anspruch 11, worin die geschätzte Speicherzuteilung auf der Grundlage einer Speicherzuteilung über mehrere zukünftige geplante Leerlaufzeiten geschieht.
  17. System nach Anspruch 11, worin die Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen Objektmarkierung, Fertigstellung und Speichereinigung umfassen.
  18. System nach Anspruch 17, worin das ausgewählte Speicherbereinigungsereignis ein Objektmarkierungsereignis ist, und worin die Anweisungen, wenn sie ausgeführt werden, ferner den einen oder die mehreren Prozessoren zum Durchführen folgender Schritte veranlassen: fragmentieren des Objektmarkierungsereignisses in eine Vielzahl von aufsteigenden Objektmarkierungsaufgaben, wobei eine erste der aufsteigenden Objektmarkierungsaufgaben für die Durchführung zunächst während des zukünftigen Leerlaufzeitraums geplant wird.
  19. System nach Anspruch 18, worin die Vielzahl von aufsteigenden Objektmarkierungsaufgaben für eine Unterteilung zwischen zwei oder mehreren verschiedenen Leerlaufzeiten geplant wird.
  20. Nicht-flüchtiges computerlesbares Speichermedium, aufweisend Anweisungen, die, wenn sie ausgeführt werden, folgende Schritte ermöglichen: Bestimmen eines zukünftigen Leerlaufzeitraums, in dem sich ein oder mehrere Prozessoren in einem Leerlaufzustand während der Ausführung einer oder mehrerer Softwareanwendungen befinden; Schätzen, für den zukünftigen Leerlaufzeitraum, einer Speicherzuteilung für die einen oder die mehreren Software-Anwendungen: Auswählen einer Vielzahl von vorab festgelegten Software-Speicherbereinigungsereignissen auf der Grundlage des festgelegten zukünftigen Leerlaufzeitraums und der geschätzten Speicherzuteilung; Planen des ausgewählten Software-Speicherbereinigungsereignisses, das während des zukünftigen Leerlaufzeitraums durchzuführen ist; und Durchführen des ausgewählten Software-Speicherbereinigungsereignisses während des zukünftigen Leerlaufzeitraums.
DE112016002420.7T 2015-05-29 2016-04-21 Leerlaufzeit-software-speicherbereinigung Pending DE112016002420T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/726,383 US20160350214A1 (en) 2015-05-29 2015-05-29 Idle time software garbage collection
US14/726,383 2015-05-29
PCT/US2016/028677 WO2016195840A1 (en) 2015-05-29 2016-04-21 Idle time software garbage collection

Publications (1)

Publication Number Publication Date
DE112016002420T5 true DE112016002420T5 (de) 2018-03-08

Family

ID=55861267

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016002420.7T Pending DE112016002420T5 (de) 2015-05-29 2016-04-21 Leerlaufzeit-software-speicherbereinigung

Country Status (8)

Country Link
US (1) US20160350214A1 (de)
EP (1) EP3304300A1 (de)
JP (1) JP6553203B2 (de)
KR (1) KR102161817B1 (de)
CN (1) CN107430492A (de)
DE (1) DE112016002420T5 (de)
GB (1) GB2553049A (de)
WO (1) WO2016195840A1 (de)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105278876B (zh) * 2015-09-23 2018-12-14 华为技术有限公司 一种固态硬盘的数据擦除方法及装置
KR102467032B1 (ko) 2015-10-08 2022-11-14 삼성전자주식회사 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
US10140150B2 (en) * 2016-02-08 2018-11-27 Microsoft Technology Licensing, Llc Thread diversion awaiting log call return
US10417125B2 (en) 2016-02-11 2019-09-17 Oracle International Corporation Feedback-based selection of regions for abortable garbage collection
US10534655B1 (en) * 2016-06-21 2020-01-14 Amazon Technologies, Inc. Job scheduling based on job execution history
US10819599B2 (en) * 2016-10-10 2020-10-27 International Business Machines Corporation Energy consumption as a measure of utilization and work characterization in a system
US10838482B2 (en) 2016-10-10 2020-11-17 International Business Machines Corporation SLA-based power management in disaggregated computing systems
US11169592B2 (en) 2016-10-10 2021-11-09 International Business Machines Corporation SLA-based backup power management during utility power interruption in disaggregated datacenters
US10360077B2 (en) 2016-10-10 2019-07-23 International Business Machines Corporation Measuring utilization of resources in datacenters
CN108614663B (zh) * 2016-12-09 2021-05-04 北京兆易创新科技股份有限公司 基于NAND flash的数据处理方法和装置
US10635335B2 (en) 2017-03-21 2020-04-28 Western Digital Technologies, Inc. Storage system and method for efficient pipeline gap utilization for background operations
US11188456B2 (en) 2017-03-21 2021-11-30 Western Digital Technologies Inc. Storage system and method for predictive block allocation for efficient garbage collection
US11269764B2 (en) * 2017-03-21 2022-03-08 Western Digital Technologies, Inc. Storage system and method for adaptive scheduling of background operations
US11537513B2 (en) 2017-12-11 2022-12-27 SK Hynix Inc. Apparatus and method for operating garbage collection using host idle
US10489085B2 (en) * 2018-02-28 2019-11-26 Micron Technology, Inc. Latency-based scheduling of command processing in data storage devices
US11650916B2 (en) * 2018-06-14 2023-05-16 Microsoft Technology Licensing, Llc Closed loop garbage collector
CN108958943B (zh) * 2018-07-25 2021-02-09 北京小米移动软件有限公司 内存释放方法及装置
CN111078389B (zh) * 2018-10-18 2023-09-05 杭州海康威视数字技术股份有限公司 一种垃圾数据清理方法、装置、电子设备及可读存储介质
US10817046B2 (en) * 2018-12-31 2020-10-27 Bmc Software, Inc. Power saving through automated power scheduling of virtual machines
US10877882B1 (en) * 2019-06-19 2020-12-29 Micron Technology, Inc. Garbage collection adapted to user device access
US11526434B1 (en) * 2019-06-25 2022-12-13 Amazon Technologies, Inc. Network-level garbage collection in an on-demand code execution system
US11550711B2 (en) * 2019-09-09 2023-01-10 Micron Technology, Inc. Dynamically adjusted garbage collection workload
US11748260B1 (en) * 2019-09-23 2023-09-05 Amazon Technologies, Inc. Service performance enhancement using advance notifications of reduced-capacity phases of operations
CN111078588B (zh) * 2019-12-17 2022-03-25 北京三快在线科技有限公司 垃圾回收方法、装置、设备及存储介质
US11314416B1 (en) * 2020-10-23 2022-04-26 EMC IP Holding Company LLC Defragmentation of striped volume in data storage system
CN112406748B (zh) * 2020-11-19 2023-08-01 广州瑞修得信息科技有限公司 一种车辆数据采集方法、装置及车辆诊断系统
CN116974455A (zh) * 2022-04-21 2023-10-31 戴尔产品有限公司 用于删除备份数据的方法、电子设备和计算机程序产品

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339214A (ja) * 1999-05-28 2000-12-08 Nec Corp 実時間メモリ管理システム、及び実時間メモリ管理方法
US7962707B2 (en) * 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
US8364918B1 (en) * 2007-04-06 2013-01-29 Marvell International Ltd. Sensed opportunistic garbage collection in memory components
US7996642B1 (en) * 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
US8185903B2 (en) * 2007-12-13 2012-05-22 International Business Machines Corporation Managing system resources
US8583783B1 (en) * 2009-08-18 2013-11-12 Sprint Communications Company L.P. Method and system for adaptive recovery of heap memory
US8261269B2 (en) * 2009-09-21 2012-09-04 Oracle International Corporation System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment
KR101992940B1 (ko) * 2012-08-08 2019-06-26 삼성전자주식회사 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템

Also Published As

Publication number Publication date
KR102161817B1 (ko) 2020-10-05
US20160350214A1 (en) 2016-12-01
GB2553049A (en) 2018-02-21
CN107430492A (zh) 2017-12-01
JP2018510432A (ja) 2018-04-12
WO2016195840A1 (en) 2016-12-08
EP3304300A1 (de) 2018-04-11
KR20170109607A (ko) 2017-09-29
JP6553203B2 (ja) 2019-07-31
GB201715232D0 (en) 2017-11-08

Similar Documents

Publication Publication Date Title
DE112016002420T5 (de) Leerlaufzeit-software-speicherbereinigung
DE112012000797B4 (de) Mehrfach-Modellierungsparadigma für eine Vorhersageanalytik
DE112011102076T5 (de) Neuordnen des Zugriffs zum Verringern der Gesamtsuchzeit auf Bandmedien
DE202011108538U1 (de) Zeitliche aufgabenbasierte Funktionsflächenverwaltung
DE112016003249T5 (de) Container-Bereitstellung auf Abhängigkeitsgrundlage
DE202017105691U1 (de) Intelligente Assistenz für wiederholte Aktionen
DE112019000187T5 (de) Dynamische zugriffskontrolle für wissens-graphen
DE112012002631T5 (de) Stream-Verarbeitung unter Verwendung einer Client-Server-Architektur
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE112011100094T5 (de) Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen
DE112015003888T5 (de) Wiederaufnahme von Sitzungszuständen
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE102010043569A1 (de) Verfahren und Vorrichtung zum Planen von Aufgaben zur Steuerung von Hardwareeinrichtungen
DE202013012502U1 (de) Clusterwartungssystem und Betrieb
DE112012001357B4 (de) Verwalten einer Portalanwendung
DE112013007532T5 (de) Echtzeitrisikovorhersage während des Bohrbetriebs
DE112012004370T5 (de) Umschalten zwischen Anwendungen in einem grafischen Betriebssystem
DE102013203526A1 (de) Verfahren und System für die Verwendung von Einstellungs-Handles zur Erleichterung der dynamischen Layout-Editierung
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE112011101759B4 (de) Sampling von Leerlauftransitionen
DE102012224362A1 (de) Anpassung einer Testhäufigkeit für die Ressourcenauslastung
DE112011100098B4 (de) Effiziente Mehrkernverarbeitung von Ereignissen
DE202014010918U1 (de) Das Clustering von Werbeanzeigen mit organischen Karteninhalten
DE112010004982B4 (de) Fortschrittliche Stromverwaltung von Plattenlaufwerken auf der Grundlage des höchsten Systemdurchsatzes
DE102010014781A1 (de) Verfahren und Vorrichtung zum Schreiben und Löschen eines nicht-flüchtigen Speichers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D.STAATES DELAWARE), MOUNT, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US