JamVM \"Features\" (from the home page)
For those interested in the design of virtual machines, JamVM includes a number of optimisations to improve speed and reduce foot-print. A list, in no particular order, is given below.
Uses native threading (posix threads). Full thread implementation including Thread.interrupt()
Object references are direct pointers (i.e. no handles)
Supports class loaders
Efficient thin locks for fast locking in uncontended cases (the majority of locking) without using spin-locking
Two word object header to minimise heap overhead (lock word and class pointer)
Execution engine supports basic switched interpreter and threaded intepreter, to minimise dispatch overhead (requires gcc value labels)
Stop-the-world mark and sweep garbage collector
Thread suspension uses signals to reduce suspend latency and improve performance (no suspension checks during normal execution)
Full object finalisation support within the garbage collector (with finaliser thread)
Garbage collector can run synchronously or asynchronously within its own thread
String constants within class files are stored in hash table to minimise class data overhead (string constants shared between all classes)
Supports JNI and dynamic loading for use with standard libraries
Uses its own lightweight native interface for internal native methods without overhead of JNI
JavaVM is written in C, with a small amount of platform dependent assembler, and is easily portable to other architectures.
http://zaurus.spy.org/feeds/davonzFeedback appreciated.
LD