-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the LunarMax wiki!
Big data in real time, you really do not want to:
-
Stop-the-World Garbage Collection. Java brings high pruductivity, but the GC is a pain in runtime.
-
Real time computation need big memory, but heap memory provided by JVM is far from enough. And bigger heap equals to a long time GC.
-
Java programmer has no privilege to control the memory. All you can do is a bunch of tricky JVM parameters to tune. But in many cases, you really need to control.
-
As normal c/c++ programs, frequently alloc/free operations generates tones of memory fragments. The longer running, the slower of allocation.
-
Then we need an enterprise-level memory solution, enable java programmers to control direct memory, providing constant allocation time and no fragment produced.
You should use Java Direct Buffer to get a bigger off-heap memory. But LunarMax can do much more for you:
-
No memory fragments will be generated. LunarMax has an internal light weighted GC thread, to clean up small pieces of memories, which is essential for a long-time on-line service. If we use new/delete or malloc/free, after millions of times of operations, the memory allocation becomes slow with a great number of fragments generated.
-
Java do not permit us to release the object memory that allocated. GC responds to it. But we don't want the "stop the world" job.
-
To simplify the deployment. We do not have our clients deploy an extra cache solution for hot data, the server environment should be simple.
-
According to our test, LunarMax allocates/frees memory 3 times faster than default new/delete solution. The longer it runs, the faster it will be comparing to the slowing down new/delete.
5 LunarMax has an internal memory index, searchable for your keys. In other words, it is a memory k-v database, with capability of managing TB in memory data.