01-11-2011
4,673,
588
Join Date: Oct 2010
Last Activity: 1 February 2016, 3:35 PM EST
Location: Southern NJ, USA (Nord)
Posts: 4,673
Thanks Given: 8
Thanked 588 Times in 561 Posts
Well, you can control JAVA behaviors with -X and other command line arguments, for instance to set the heap size -Xmx very high and to specify how much GC cost you want. GC is forced when the heap fills, and the heap is VM, disk is cheap, newer JAVA has nice GC, parallel and heuristic. These options also can turn on parrallel buffered I/O, resulting in fewer real reads and writes, faster with lower overhead, no code but one option.
Using a "Server" grade platform and server mode java means the code is more optimized.
Using 64 bit mode unnecessarily may add some overhead.
RAM is VM, so "RAM in use" is a useless concept. If a program using 20M of RAM exits, there is 20M free until there are 20M new page faults -- so what? Do you have too much paging?
CPU use is pretty much dependent on economical programming, finesse and real load. Finding out what code is the CPU hog is a big industry, easier in C/C++ than JAVA, as a short truss/tusc/strace of a JAVA process does not tell you much. Creation and destruction of complex objects frequently is a great cost, in JAVA or C++, and worse in JAVA since it forces more GC. Sometimes jobs running continuously can be run at intervals and in sequence, not in parallel, so they do not start the machine thrashing or peak the CPU usage.