Starting a program with default or no extra configuration should ideally be the only thing required in an adaptive runtime. Runtime feedback should provide the system with whatever extra information it needs, making it possible for it to achieve a steady state, optimum behavior, and correct heap size without user intervention. This is sadly enough not always the case in the real world, so good out of the box behavior is a hot research topic for JVMs.