¿Porqué querrías capturar un OutOfMemoryError? Si un OutOfMemoryError se genera por la JVM, no hay mucho que podamos hacer, así que ¿qué utilidad tiene el OutOfMemoryError?
Encontrarse con un OutOfMemoryError significa que el recolector de basura ya ha hecho todo lo posible para liberar memoria reclamando los espacios de memoria de los objetos que no tienen referencias fuertes. Si no pudo reclamar suficiente espacio, entonces también intenta obtener memoria del sistema operativo subyacente, a menos que el espacio de heap haya alcanzado el límite superior de la JVM fijado por el parámetro -Xmx (-mx en JVMs anteriores a Java 2). Así que si aparece el OutOfMemoryError significa que no hay mas espacio en el heap disponible que se pueda reclamar en este momento, y que o el sistema operativo no ha podido dar más memoria a la JVM o hemos alcanzado el límite superior de la JVM. En cualquier caso, no hay mucho que podamos hacer, así que ¿porqué querríamos capturar un OutOfMemoryError?
Las secciones siguientes describen unas situaciones especiales en las que puede ser útil capturara un OutOfMemoryError.