We present ByteSTM, a virtual machine-level Java STM implementation that is built by extending the Jikes RVM. ByteSTM implements two STM algorithms, TL2 and RingSTM. We modify Jikes RVM's Optimizing compiler to transparently support implicit transactions. Being implemented at the VM-level, it accesses memory directly and handles memory uniformly, and avoids Java garbage collection by manually managing memory for transactional metadata. Our experimental studies reveal throughput improvement over other non-VM STMs in the range of 7%-66% on micro-benchmarks and 7%-76% on macro-benchmarks.