The Low-Level Persistence Library (LLPL) is a Java library that provides access to off-heap persistent memory. LLPL includes several kinds of components that can be allocated and used alone or together in building applications:
Data stored in the components above can persist beyond the life of a JVM instance, i.e. across application or system restarts. LLPL provides APIs that help developers ensure consistency of stored data.
Memory allocated using LLPL is not garbage-collected and must be explicitly deallocated using LLPL APIs.
The following are the prerequisites for building this Java library:
This library assumes the availability of hardware persistent memory or emulated persistent memory. Instructions for creating emulated persistent memory are shown below.
The preferred way is to create an in-memory DAX file system. This requires Linux kernel 4.2 or greater. Please follow the steps at:
Alternatively, for use with older kernels, create a tmpfs partition as follows (as root):
$ mount -t tmpfs -o size=4G tmpfs /mnt/mem # creates a 4GB tmpfs partition $ chmod -R a+rw /mnt/mem # enables read/write permissions to all users
Once all the prerequisites have been satisfied:
$ git clone https://github.com/pmem/llpl.git $ cd llpl $ mvn test -Dtest.heap.path=<path to persistent memory mount point>
Available Maven commands include:
compile- builds sources
test- builds and runs tests
javadoc:javadoc- builds javadocs into
package- builds jar file into
LLPL is available from the Maven central repository. Add the following dependency to your pom.xml:
<dependency> <groupId>com.intel.pmem</groupId> <artifactId>llpl</artifactId> <version>1.2.0-release</version> <type>jar</type> </dependency>
To use this library in your Java application, build the LLPL jar and include its location in your Java classpath. For example:
$ mvn package $ javac -cp .:<path>/llpl/target/llpl-<version>.jar <source> $ java -cp .:<path>/llpl/target/llpl-<version>.jar <class>
Alternatively, include LLPL’s
target/classes directory in your Java classpath and the
target/cppbuild directory in your
java.library.path. For example:
$ mvn compile $ javac -cp .:<path>/llpl/target/classes <source> $ java -cp .:<path>/llpl/target/classes -Djava.library.path=<path>/llpl/target/cppbuild <class>
Thanks for your interest! Please see the CONTRIBUTING.md document for information on how to contribute.
We would love to hear your comments and suggestions via https://github.com/pmem/llpl/issues.
The contents of this web site and the associated GitHub repositories are BSD-licensed open source.