1. A method of executing a task, comprising: executing a first task comprising a low-frequency task in which garbage is collected using a garbage collector; initializing a second task comprising a high-frequency task by: constructing an instance of a class that implements a standard runnable thread interface; and creating a data structure for supporting communication between said second task and lower priority threads, said data structure being accessible by a thread running in a garbage-collected heap in said first task to communicate data between said high-frequency task and said low-frequency task; validating said second task to ensure that said second task is executable without synchronizing with said first task, said validating said second task comprising determining a set of objects (O), a set of field signatures (F), a set of methods (M), and a set of virtual method signatures (V) which are accessible by said second task; instantiating said second task to create a class for executing said second task, said instantiating said second task comprising: creating an executable thread that will repeatedly invoke said second task; tracking said set of objects which are accessible by said second task; pinning said objects such that said objects are immovable by said first task; extending an interface to a run-time system with second task run-time support code for supporting said pinning of said objects; performing another pinning of said objects to determine if any pointers in said objects are stale and, if stale pointers are determined, updating said stale pointers; forwarding pointers for objects associated with said second task; and installing a set of objects which are accessible by said second task into run-time data structures such that said set of objects is external to said second task; and after said instantiating said second task, executing said second task, said garbage collector being preemptable by said second task, said executing said second task comprising: performing an allocation while handling an exceptional condition during said executing said second task; and adding a set of pinned objects to a global table for a duration of executing said second task to ensure that any object accessible to said second task is accessible from another root, wherein said second task is implemented using standard programming language constructs and wherein objects associated with said second task are automatically discovered by the run-time system, wherein objects associated with said second task reside in a garbage-collected heap, are referenceable by other objects in said garbage-collected heap, are pinned during a life of said second task, and are subject to garbage collection upon termination of said second task, wherein said executing said second task is performed without executing a run-time memory access check, wherein said determining said sets comprises a data-sensitive analysis, wherein said validating said second task comprises adding an identifier to a header of an object, and wherein only said second task run-time support code has access to said pinning said objects and unpinning said pinned objects.