Excepcion OutOfMemoryError

Excepcion OutOfMemoryError
10 de Julio del 2006
Hola, tengo un problema, haber si alguno sabe como se puede solucionar, cuando leo o escribo un fichero muy grande 100 o 200 MB con un fileinputstream/output cuando se peta la memoria asignada por la JVM (unos 64MB) me salta la excepcion java.lang.OutOfMemoryError.
La unica solución que he visto es decir a la JVM que aumente la memoria virtual con -Xmx400M, pero lo que quiero es una solucion al leer o escribir en el fichero, para que no ocupe tanto de la memoria virtual...
Muchas gracias.

rubece
10 de Julio del 2006
Hola, hace tiempo yo hice un programa que leí y escribía de ficheros. Probando con ficheros grandes me di cuenta de que me pasaba lo mismo que a ti (me saltaba la excepción Excepcion OutOfMemoryError). Me di cuenta que el array que usaba para leer y escribir lo reservaba para el tamaño total del fichero y cada vez que intentaba reservar un tamaño de array muy grande (ya que el fichero era grande) me saltaba dicha excepción. Comprueba que el array que usas para leer o escribir lo reservas para el tamaño total del fichero y lo que tienes que hacer es ir leyendo cacho a cacho. Eso es todo. Hasta luego.

lepard
10 de Julio del 2006
Esto es una idea:

Mira a ver la clase FileChannel, que te permite leer o escribir una posicion determeniada un número de bytes,para ello tendras que usar la clase bloqueo. Estoy sirve para que sólo bloquees una parte del fichero se usa mucho en accesos compartidos a ficheros. Y no consume mucha memoria, pruebalo y comentamentame como te ha ido.

lepard
10 de Julio del 2006
La clase que bloquea ficheros el FileLock