Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Arobavx en 9 Diciembre 2010, 03:43 am



Título: array size exceeds
Publicado por: Arobavx en 9 Diciembre 2010, 03:43 am
hola, tengo un problema al hacer muy grande un arreglo hay alguna forma de modificar el limite?cual es el limite? el error es el siguiente.
Citar
java.lang.OutOfMemoryError: Requested array size exceeds VM limit


Título: Re: array size exceeds
Publicado por: sapito169 en 9 Diciembre 2010, 04:58 am
y por que tienes un array gigante mejor arregla tu aplicacion o en caso de que no haya problema usa cualquier base de datos como dervy


Título: Re: array size exceeds
Publicado por: 1mpuls0 en 9 Diciembre 2010, 07:06 am
Los errores más dificiles de capturar son los de "OutOfMemory" (quedarse sin memoria) ya que en muchos casos la aplicación queda en estado inconsistente.
A mi parecer si la aplicación se queda sin memoria es mejor terminarla, aunque muchas veces es imposible cambiar el código para hacerlo de manera limpia.

Como desarrolladores Java a veces vemos como la máquina virtual java se cuelga o se cae porque hacemos algo mal o por limitaciones del sistema.

La verdad no se muy bien que es lo que estes haciendo, pero podrias capturar el error un con try-catch.

Código
  1. public class RunOutOfMemory {
  2.  
  3. public static void main(String [] args) {
  4. try {
  5. long [] array = new long[Integer.MAX_VALUE];
  6. System.out.println("Mi arreglo tiene un tamaño de: " + array.length);
  7. }
  8. catch(OutOfMemoryError e) {
  9. System.out.println("El tamaño del arreglo excede el límite de la VM");
  10. }
  11. }
  12. }


O bien con

Código
  1. throw new OutOfMemoryError("El tamaño del arreglo excede el límite de la VM")

Un saludo.


Título: Re: array size exceeds
Publicado por: Debci en 12 Diciembre 2010, 21:41 pm
O ampliar la memoria virtual de la maquina Java VM.
Es uno de los grandes inconvenientes de Java, que no todas las maquinas disponen de la misma memoria virtual para ejecutar el Java Runtime, mas vale avisar de ello con las excepciones como ya te han citado, o simplemente cortar la ejecución de la aplicación, aunque sucio, es rapido, pero siempre es mejor que el usuario sepa que ha ocurrido.

Saludos