1. In a processing system including an application, a run-time system, and a heap memory used by the application, wherein unused memory in the heap memory is reclaimed by a garbage collector, a method for reducing memory used by the application comprising: periodically monitoring, with the processing system, information related to the application's memory usage including a maximum heap memory size, a committed heap memory size, an in use heap memory size, and a garbage collection activity level; based on determining that the garbage collection activity level is below a first threshold, estimating an amount of memory that can be released from the application by reducing the maximum heap memory size; and based on determining that the estimated amount of memory that can be released from the application is above a second threshold, attempting to release memory from the application by reducing the maximum heap memory size to a value lower than the committed heap memory size, but not lower than the in use heap memory size.