All Projects → mmtk → mmtk-core

mmtk / mmtk-core

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT
Memory Management ToolKit

Programming Languages

rust
11053 projects
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to mmtk-core

on-the-fly-gc
Concurrent mark-sweep garbage collector for accurate garbage collection of language runtimes in C++ 1x.
Stars: ✭ 25 (-87.8%)
Mutual labels:  garbage-collector, garbage-collection, gc, memory-management
cactusref
🌵 Cycle-Aware Reference Counting in Rust
Stars: ✭ 129 (-37.07%)
Mutual labels:  garbage-collector, garbage-collection, memory-management
GC
A lightweight conservative garbage collector for C/C++
Stars: ✭ 108 (-47.32%)
Mutual labels:  garbage-collector, memory-management
gctoolkit
Tool for parsing GC logs
Stars: ✭ 1,127 (+449.76%)
Mutual labels:  gc, memory-management
python-memory-management-course
Demo code exploring Python's memory models and collection algorithms from the Talk Python Training course.
Stars: ✭ 31 (-84.88%)
Mutual labels:  garbage-collection, memory-management
tgc
A Tiny, portable, precise, incremental mark-sweep GC designed for C++.
Stars: ✭ 36 (-82.44%)
Mutual labels:  garbage-collection, gc
Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+1266.83%)
Mutual labels:  garbage-collector, gc
openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+1350.24%)
Mutual labels:  garbage-collector, gc
Ugc
A single-header incremental garbage collector library
Stars: ✭ 173 (-15.61%)
Mutual labels:  garbage-collection, memory-management
Gc
Simple, zero-dependency garbage collection for C
Stars: ✭ 851 (+315.12%)
Mutual labels:  garbage-collection, memory-management
Bdwgc
The Boehm-Demers-Weiser conservative C/C++ Garbage Collector (libgc, bdwgc, boehm-gc)
Stars: ✭ 1,855 (+804.88%)
Mutual labels:  garbage-collection, memory-management
java-memory-agent
Java Memory Agent for Container RAM Usage Optimization
Stars: ✭ 35 (-82.93%)
Mutual labels:  garbage-collector, memory-management
llvm-statepoint-utils
Runtime support for LLVM's GC Statepoints
Stars: ✭ 35 (-82.93%)
Mutual labels:  garbage-collector, garbage-collection
csharp-workshop
NDC London 2019, Workshop: Become a better C# programmer: more Value, more Expressions, no Waiting
Stars: ✭ 21 (-89.76%)
Mutual labels:  memory-management
Aqeous
(Inactive, Checkout AvanaOS, Rewrite of this) This is a New Operating System (Kernel right now). Made completely from scratch, We aim to make a complete OS for Learning purpose
Stars: ✭ 23 (-88.78%)
Mutual labels:  memory-management
total
Ruby Gem to get total memory size in the system
Stars: ✭ 15 (-92.68%)
Mutual labels:  memory-management
buddy alloc
A single header buddy memory allocator for C
Stars: ✭ 46 (-77.56%)
Mutual labels:  memory-management
Mono
Mono open source ECMA CLI, C# and .NET implementation.
Stars: ✭ 9,606 (+4585.85%)
Mutual labels:  garbage-collector
Ramudroid
Ramudroid, autonomous solar-powered robot to clean roads, realtime object detection and webrtc based streaming
Stars: ✭ 22 (-89.27%)
Mutual labels:  garbage-collection
interview-refresh-java-bigdata
a one-stop repo to lookup for code snippets of core java concepts, sql, data structures as well as big data. It also consists of interview questions asked in real-life.
Stars: ✭ 25 (-87.8%)
Mutual labels:  garbage-collection

MMTk

crates.io docs.rs project chat

MMTk is a framework for the design and implementation of memory managers. This repository hosts the Rust port of MMTk.

Contents

Requirements

We maintain an up to date list of the prerequisite for building MMTk and its bindings in the mmtk-dev-env repository.

Build

MMTk can build with a stable Rust toolchain. The minimal supported Rust version is 1.57.0, and MMTk is tested with 1.59.0.

$ cargo build

MMTk also provides a list of optional features that users can choose from. A full list of available features can be seen by examining Cargo.toml. By passing the --features flag to the Rust compiler, we conditionally compile feature-related code. For example, you can optionally enable sanity checks by adding sanity to the set of features you want to use.

You can pass the --release flag to the cargo build command to use the optimizing compiler of Rust for better performance.

The artefact produced produced by the build process can be found under target/debug (or target/release for the release build).

ci-build.sh shows the builds tested by the CI.

Usage

MMTk does not run standalone. You would need to integrate MMTk with a language implementation. You can either try out one of the VM bindings we have been working on, or implement your own binding in your VM for MMTk. You can also implement your own GC algorithm in MMTk, and run it with supported VMs. You can find up-to-date API documentation for mmtk-core here:

Try out our current bindings

We maintain three VM bindings for MMTk. These bindings are accessible in the following repositories:

For more information on these bindings, please visit their repositories.

Implement your binding

MMTk provides a bi-directional interface with the language VM.

  1. MMTk exposes a set of APIs. The language VM can call into MMTk by using those APIs.
  2. MMTk provides a trait VMBinding that each language VM must implement. MMTk use VMBinding to call into the VM.

To integrate MMTk with your language implementation, you need to provide an implementation of VMBinding, and you can optionally call MMTk's API for your needs.

For more information, you can refer to our porting guide for VM implementors.

Implement your GC

MMTk is a suite of various GC algorithms (known as plans in MMTk). MMTk provides reusable components that make it easy to construct your own GC based on those components. For more information, you can refer to our tutorial for GC implementors.

Tests

We use both unit tests and VM binding tests to test MMTk in the CI.

Unit tests

MMTk uses Rust's testing framework for unit tests. For example, you can use the following to run unit tests.

$ cargo test

A full list of all the unit tests we run in our CI can be found here.

VM binding tests

MMTk is also tested with the VM bindings we are maintaining by running standard test/benchmark suites for the VMs. For details, please refer to each VM binding repository.

Contributing to MMTk

Thank you for your interest in contributing to MMTk. We appreciate all the contributors. Generally you can contribute to MMTk by either reporting MMTk bugs you encountered or submitting your patches to MMTk. For details, you can refer to our contribution guidelines.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].