Comment éviter l'erreur OOM (Out of memory) lors de la récupération de tous les enregistrements de la table énorme?

Je suis chargé d'une tâche de convertir un énorme tableau de fichier XML personnalisé. Je serai à l'aide de Java pour ce travail.

Si j'ai simplement émettre un "SELECT * from client", elle peut retourner énorme quantité de données qui a fini par causer OOM. Je me demande, est-il une manière que je peux processus de l'enregistrement dès qu'il devient disponible, et supprimer l'enregistrement de la mémoire après que, au cours de sql processus de récupération?

--- edité le 13 Juillet 2009

Permettez-moi de préciser ma question. J'ai 1 serveur de base de données et 1 serveur d'application.
Quand je l'émission d'une requête de sélection dans l'application, les données de serveur de base de données de serveur d'application.

Je crois (corrigez-moi si je me trompe) ResultSet devrez attendre jusqu'à la réception de tous les enregistrements de la requête. Même si on fetch size 4, pour un 1000-enregistrement de la table, nous finissons toujours pas 1000 enregistrements dans la mémoire du tas de serveur d'application, est-il correct? Taille de l'extraction seulement une incidence sur le nombre d'aller-retour de/vers serveur de base de données.

Ma question est, comment commencer le traitement sur que 4 (ou n'importe quel nombre) documents immédiatement après l'arrivée de l'app serveur, et de le disposer à libérer de la mémoire dans le serveur d'application?

source d'informationauteur janetsmith