To keep costs down Virtual Private Servers (VPSs) are a very good way to host web applications, they provide all the benefits of a dedicated server but are much cheaper to hire. The disadvantage most of them have is that the cheapest options often have limited amounts of memory (256-512MB), when running a PHP application this is often more than enough but for running Java and Grails applications (which run on a Java application servers) this provides a little challenge. It’s not unfeasible at all, it’s just that some extra attention has to be payed when building the application stack.
The most important step is to start as minimal as possible and only adding applications and starting processes that are necessary. One way is to use Tomcat as an application server and configuring it to be used without Apache Web Server. I prefer Jetty to Tomcat since I find it easier to set up and deploy the web applications and they use about the same amounts of memory. An added benefit of using Jetty is the ability to run it on port 80 without using iptables, ipchains or a similar mechanism which sometimes can be really tricky on a VPS since you can’t fiddle with the kernel.