As much as I have searched, it seems quite not possible to control how much the OS can allocate for buffers/cache.
A menos que você tenha feito muitos testes, eu sugiro que você nem tente. Os desenvolvedores do kernel fizeram muito trabalho tentando fazer as coisas serem tão eficientes quanto possível no caso geral. Até que você saiba que isso é um problema, é melhor deixá-lo permitir e deixá-lo em cache, tanto quanto possível, é quase sempre uma coisa boa.
What would be an alarming limit if the java process is CPU bound?
Depende do seu aplicativo, mas eu ficaria preocupado se você usar mais de 60% de sua CPU.
What would be an alarming limit if the java process is IO bound?
Depende do seu aplicativo, mas geralmente deseja assistir ao valor% iowait.
should we even worry about free memory?
No Linux, procurar apenas por 'memória livre' quase nunca é útil. Eu ficaria mais preocupado se os buffers e o cache estivessem próximos de 0. Eu me preocuparia se você começasse a usar grandes quantidades de swap, ou se você trocasse com frequência.