vaciar+memoria+java
Hola!
Tengo un programa que ejecuta muchÃsimas operaciones seguidas, que necesita bastante memoria RAM por cada operacion que hace, y claro a la sexta operación me dice java.lang.OutOfMemoryError.
El caso que de una operación a otra solo almaceno dos floats(que son dos acumuladores), porlo que creo que el problema es que los datos se quedan en memoria principal (y no es necesario). Por lo que me gustarÃa saber alguna forma de solucionar este problema , gracias!
un saludo :)
Tengo un programa que ejecuta muchÃsimas operaciones seguidas, que necesita bastante memoria RAM por cada operacion que hace, y claro a la sexta operación me dice java.lang.OutOfMemoryError.
El caso que de una operación a otra solo almaceno dos floats(que son dos acumuladores), porlo que creo que el problema es que los datos se quedan en memoria principal (y no es necesario). Por lo que me gustarÃa saber alguna forma de solucionar este problema , gracias!
un saludo :)
Buenas:
Me parece raro que se te vaya la memoria al echar cuentas. Es posible si utilizas arrays muy grandes.
Yo revisarÃa que no te metas en bucles o recursividades infinitas o que inadvertidamente estes guardando los valores en listas, vectores o similares.
De todas formas, puedes dar más memoria arrancando java con la opcion -Xmx y -Xms (echa un ojo en http://h21007.www2.hp.com/cmdspp/QuestionAnswer/1,1764,8799E158-CF6A-11D6-975C-00306E0146CA,00.html)
Para llamar al recolector de basura, puedes usar System.gc(). De todas formas, no suele hacer falta y esta llamada no garantiza que entre.
Se bueno.
Me parece raro que se te vaya la memoria al echar cuentas. Es posible si utilizas arrays muy grandes.
Yo revisarÃa que no te metas en bucles o recursividades infinitas o que inadvertidamente estes guardando los valores en listas, vectores o similares.
De todas formas, puedes dar más memoria arrancando java con la opcion -Xmx y -Xms (echa un ojo en http://h21007.www2.hp.com/cmdspp/QuestionAnswer/1,1764,8799E158-CF6A-11D6-975C-00306E0146CA,00.html)
Para llamar al recolector de basura, puedes usar System.gc(). De todas formas, no suele hacer falta y esta llamada no garantiza que entre.
Se bueno.
Gracias, al final he utilizado lo que tu me dijiste==>-XX:NewSize=128m -XX:MaxNewSize=128m -X
X:SurvivorRatio=8 -Xms512m -Xmx512m
Con eso he conseguido que el programa realice bastantes más operaciones de las que hacÃa, pero aún asà no finaliza. También he intentado forzar el recolector de basura pero los resultados son mÃnimamente mejores y además el programa se ralentiza enormemente, si encuentro algo de interés para solucionar el asunto del todo lo pondré aquà por si a alguien pudiera servirle.
Un saludo :) !!!!!
X:SurvivorRatio=8 -Xms512m -Xmx512m
Con eso he conseguido que el programa realice bastantes más operaciones de las que hacÃa, pero aún asà no finaliza. También he intentado forzar el recolector de basura pero los resultados son mÃnimamente mejores y además el programa se ralentiza enormemente, si encuentro algo de interés para solucionar el asunto del todo lo pondré aquà por si a alguien pudiera servirle.
Un saludo :) !!!!!
