1. A computer-implemented method for jointly managing dynamically generated code and data, the method comprising: providing a system memory heap from which a plurality of code pools and a plurality of garbage collection pools are allocated for each of at least one application domain, the plurality of code pools storing dynamically generated code and the plurality of garbage collection pools storing instance variables associated with the dynamically generated code; and upon request, performing a garbage collection process that releases a portion of the system memory heap previously allocated by a first application domain out of the at least one application domain, the portion returning to the system heap for reallocation to a second application domain out of the at least one application domain for a code pool or a garbage collection pool.