If your apps is consuming most of the CPU and memory on a single-user workstation, I m skeptical that translating it into some non-VM language is going to help much. With Java, you re depending on the VM for things like memory management; you re going to have to re-implement their equivalents in your non-VM language. Also, Java s memory management is pretty good. Your application probably isn t real-time sensitive, so having it pause once in a while isn t a problem. Besides, you re going to be running this on a multi-user system anyway, right?
Memory usage will have more to do with your underlying data structures and algorithms rather than something magical about the language. Unless you ve got a really great memory allocator library for your chosen language, you may find you uses just as much memory (if not more) due to bugs in your program.
Since your app is compute-intensive, some other language is unlikely to make it less so, unless you insert some strategic sleep() calls throughout the code to deliberately make it yield the CPU more often. This will slow it down, but will be nicer to the other users.
Try running your app with Java s -server option. That will engage a VM designed for long-running programs and includes a JIT that will compile your Java into native code. It may make your program run a bit faster, but it will still be CPU and memory bound.