G06F12/0269

Garbage collection control in managed code

Controlling garbage collection operations. The method includes setting up garbage collection to collect objects that are no longer in use in a managed code environment. The method further includes receiving managed code input specifying a desired quantum within which it is desired that garbage collection not be performed. The method further includes performing a computing operation to determine the desired quantum can likely be met. The method further includes running memory operations within the quantum without running the initialized garbage collection.

Storage allocation enhancement of microservices

Method and system are provided for storage allocation enhancement of microservices. A method carried out at a microservice orchestrator, includes: categorizing a microservice container, wherein the categorization defines a predicted storage behavior of the microservice container input/output operations; and providing the categorization in association with the microservice container input/output operations to a storage system for use in storage allocation of the input/output operations. A method at a storage controller includes: receiving microservice container input/output operations with an associated categorization, wherein the categorization defines a predicted storage behavior of the microservice container input/output operations; and using the associated categorization for optimizing storage allocation for the input/output operations and/or optimizing garbage collection performance.

Inline garbage collection for log-structured file systems

Exemplary methods, apparatuses, and systems receive a command to overwrite or delete data stored within an allocated portion of a file system. In response to the command, an entry is added to a first data structure. A write command is received. The portion of the file system added to the first data structure is formatted for reallocation. In performance of the write command, the portion of the file system is reallocated. Portions of the file system are allocated from a second data structure when the second data structure includes a sufficient amount of space to satisfy the write command and from the first data structure when the second data structure does not include a sufficient amount of space. The second data structure includes free portions of the file system that have been formatted for allocation. The first data structure includes free portions that have yet to be formatted.

FEEDBACK-BASED SELECTION OF REGIONS FOR ABORTABLE GARBAGE COLLECTION

The disclosed embodiments provide a method, apparatus, and system for selecting, based on feedback from previous garbage collections, a portion of a referenced memory area for garbage collection within a time window. During the execution of a software program, the system selects a given portion of a referenced memory area on which garbage collection can be completed within the given time window and attempts to complete garbage collection on at least the given portion of the referenced memory area before the end of the given time window. Next, the system selects, based on the results of the garbage collection performed during the given time window, a subsequent portion of the referenced memory area on which garbage collection can be completed within the subsequent time window and attempts to complete garbage collection on at least the subsequent portion of the referenced memory area before the end of the subsequent time window.

CONSOLIDATED AND CONCURRENT REMAPPING AND IDENTIFICATION FOR COLORLESS ROOTS

During a concurrent Relocation Phase, a GC thread relocates live objects, as an application thread executes. References in a frame on a call stack are remapped if the application thread attempts to access the frame. References on the call stack remains stale if no application thread attempts access. The GC thread may proceed with a subsequent phase of a GC cycle, even if a frame has stale references and therefore has not assumed a remap state. During a concurrent Mark/Remap Phase, the call stack may include frames in different frame states. The GC thread selects appropriate operations for processing each frame based on the respective frame state. When the GC thread encounters a frame not in the remap state, references therein are first remapped, and then identified as roots. Hence, root reference remapping and identification are performed in a single concurrent phase of a GC cycle.

IMPLEMENTING STATE-BASED FRAME BARRIERS TO PROCESS COLORLESS ROOTS DURING CONCURRENT EXECUTION

An application thread executes concurrently with a garbage collection (GC) thread traversing a call stack of the application thread. Frames of the call stack that have been processed by the GC thread assume a global state associated with the GC thread. The application thread may attempt to return to a target frame that has not yet assumed the global state. The application thread hits a frame barrier, preventing return to the target frame. The application thread determines a frame state of the target frame. The application thread selects appropriate operations for bringing the target frame to the global state based on the frame state. The selected operations are performed to bring the target frame to the global state. The application thread returns to the target frame.

TRACKING FRAME STATES OF CALL STACK FRAMES INCLUDING COLORLESS ROOTS

A global state associated with a garbage collection (GC) process is a state assumed by a reference after GC operations for a current GC phase are performed for the reference. A frame state of a frame on a call stack of an application thread tracks a progress of GC operations for references therein. A color watermark is added after a global state change. The frame originally marked by a stack watermark is now marked by the new color watermark. The new color watermark marks a deepest frame on the call stack having the old global state. A color watermark is deleted when the stack watermark meets the color watermark. If the stack watermark is shifted in the call stack to mark the same frame as a color watermark, then the color watermark is deleted. The marked frame is a deepest frame on the call stack having the current global state.

Hot-Spot Adaptive Garbage Collection

A method, a computing device, and a non-transitory machine-readable medium for assessing data segments for garbage collection is provided. In some embodiments, the method includes identifying a plurality of data segments. A first rate at which data within each of the plurality of data segments has been invalidated since a first point in time is determined, and a second rate at which data within each of the plurality of data segments has been invalidated since a second point in time subsequent to the first point in time is determined. The second rate is compared to the first rate for each of the plurality of data segments, and a garbage collection score is assigned to the respective data segment based on the comparison. The garbage collection score may be further based on a utilization of the respective data segment and/or an age of the respective data segment.

REDUCING MINOR GARBAGE COLLECTION OVERHEAD
20170322879 · 2017-11-09 ·

A method and system are provided for reducing garbage collection overhead. The method includes representing, by a hardware processor, an application program by a Directed Acyclic Graph having a set of nodes. Each of the nodes represents a respective one of a plurality of computation tasks. The method further includes specifying, by the hardware processor from the set of nodes, any of the nodes which store a respective computation result for at least a threshold period of time as cache nodes. The method further includes allocating, by the hardware processor, the respective computation result of each of the cache nodes into a tenure area of a memory.

Pauseless garbage collector write barrier
09767019 · 2017-09-19 · ·

An example method of managing memory includes identifying a first object of the first type to update, the first object being stored on a heap. The method also includes reading a first memory address stored in a second object of the second type and storing a copy of the first object at a second memory address. The first memory address is an initial memory address of the first object. The method further includes after the copy is stored, reading a third memory address stored in the second object. The third memory address is a current memory address of the first object. The method also includes determining whether the first memory address matches the third memory address, and when the first memory address is determined to match the third memory address, updating the first memory address stored in the second object with the second memory address.