Juice (JVM)

JUICE is a Java ME experimental Java Virtual Machine written in C according to the Sun Microsystems specifications. The Juice JVM, designed for real-time Java, was specifically developed to run on the NUXI operating system. The most relevant features of Juice are related to the structure for the heap memory, to the object allocation policy and to the garbage collector used.

Heap memory

In Juice, all the available heap memory is shared in "chunks" of pre-fixed size. The memory unit used is the "d-word" (that stands for "double-word"). The actual default size of the chunks is fixed to 64 d-words. The free memory chunks are organized in a linked list, while the chunks occupied by Java objects are connected to each other through a hierarchical structure in a way that resembles the representation of the UNIX file system.

Real-time object allocation policy

The object allocation policy in Juice is strictly connected to the structure used to represent heap memory. Because of this structure, it becomes possible to allocate (and deallocate) Java objects in a time that is dependent only on the size of the object itself (predictability).

The Pay-per-Use garbage collector

The proposed garbage collector is based on a non-copying tracing collector that performs memory reclamation only when a new object has to be allocated. The name of the garbage collector is because the cost paid by the mutator, in terms of wasted time for collector execution, is proportional to the size of the object to allocate.

Authors

Garbage Collector, Heap Memory Management: Corrado Santoro, Roberto Aloi

All the rest: Corrado Santoro

gollark: Just use all the memory as a stack, silly.
gollark: ↑ GAZE upon my excellent assembly language.
gollark: ```mipsasm!PAD E0LOOP:re 8 RI # read target location from arbitrary side into bufferadd RJ RI !1mez RJ I !0 # if target location is 255, jump to 0 (normal thing start)re 8 RJ # read data into other bufferidm RI RJ # transfer data into specified locationmov I !LOOP # unconditional jump back to startRI: ! 0RJ: ! 0```
gollark: Nodes which are newly powered on accept a simple* protocol to write their memory and boot them into newly loaded code.
gollark: I made an infinite replicator thing also. It's very slow.

References

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.