Changelog:
* Support for Soft/Weak/Phantom References
* Garbage Collector optimisations
* Added Java language-level access checks
* Fix for inheritance of inaccessible methods.
* Linux PowerPC build fix (this was quickly fixed in CVS).
* FFI fixes for 64bits
* Fix for initiating loaders and array classes.
* Mauve tests
* Classpath 0.19
* Support for kfreebsd and Linux-powerpc64
* Tidy up
TODO:
=====
It seems that cannot initialize the VM, maybe it must depend on libffi?
gnu classpath 0.19 is not in lang/ . It requires an URGENT update.
chlog:
- Updated to be compatible with Classpath-0.17 and Classpath from
CVS (as of 28th July).
- Shutdown hooks are now ran on VM termination, either normally, or via user
interruption (i.e ctrl-C).
- Revised GC allocation failure policy
- Using a simple heuristic the GC attempts to maintain at least 25% heap
free. If it fails the heap is expanded, regardless of whether the
allocation request could be satisfied. This reduces frequent garbage
collection cycles when GC returns only a limited amount of memory.
- Revised Object finalization
- during GC a thread could deadlock waiting for finalization. This
occurred when a finalizer (running in the finalizer thread) attempted
to grab a lock the thread is holding.
- a minor bug fix where finalized objects waiting for the finalizer to
be ran could keep alive other finalized objects (if it had the only
reference to it).
- a minor bug fix where objects waiting for finalization could be lost
(i.e. finalize() method not called). This only happened when >1000
objects were outstanding.
- VMRuntime.runFinalization() implemented. This enables a thread to force
finalization.
- In certain circumstances a class loader would be unmarked during GC,
enabling it to be collected. This resulted in a SEGV.
- JNI FindClass now uses the current class loader, not the first non-null on
the stack.
- VMClass.getModifiers() now handles inner class attributes.
- Fix to enable build directory to be different to source directory (this was
broken in 1.3.0).
JamVM is a new Java Virtual Machine which conforms to the JVM specification
version 2 (blue book). In comparison to most other VM's (free and commercial)
it is extremely small, with a stripped executable on PowerPC of only ~135K,
and Intel 100K. However, unlike other small VMs (e.g. KVM) it is designed to
support the full specification, and includes support for object finalisation,
the Java Native Interface (JNI) and the Reflection API.