¿Hay alguna manera en Java de hacer algo justo antes de quedarse sin memoria? Por ejemplo, mantener una lista de estados de documentos previos (para deshacer) y solo eliminar estados muy antiguos cuando la memoria está a punto de agotarse.Haga algo justo antes de quedarse sin memoria
Respuesta
Por ejemplo, mantener una lista de estados anteriores del documento (para deshacer) y sólo la eliminación de estados muy antiguos cuando la memoria está a punto de agotarse?
Es posible que pueda hacer algo con SoftReference
. Tenga en cuenta también la documentación general para el paquete java.lang.ref. Si solo se puede acceder a los objetos a través de SoftReference
, se recolectarán los desechos antes de que ocurra un error de falta de memoria. Sin embargo, tenga en cuenta que las VM no están obligadas a mantener esas referencias antes de tal evento ni a garantizar el orden en el que podrían ser eliminadas. Puede que sea mejor combinarlas con alguna forma de persistencia.
Sí, ciertamente es posible.
Probablemente usaría una lista de SoftReference s para los estados del documento anterior. Se garantiza que se eliminarán antes de que ocurra una excepción de falta de memoria.
En algún intervalo periódico, puede limpiar las referencias nulas fuera de la lista.
También recomendaría mantener una referencia normal al estado más reciente por lo que siempre se puede garantizar al menos un deshacer :-)
Esto dependerá de la implementación JVM, pero si tienes suerte, la JVM mantenga los estados más recientes y elimine los más antiguos. Esto no es estrictamente requerido en la especificación de JVM, pero es el comportamiento recomendado.
- 1. Android: Convertir flujo a cadena sin quedarse sin memoria
- 2. Haga algo javascript antes de asp.net anypostback
- 3. ¿Cómo manejar imágenes grandes en matlab sin quedarse sin memoria?
- 4. Logcat suele quedarse sin trabajo
- 5. ¿Cómo evitar quedarse sin memoria en la aplicación de uso de memoria alta? C/C++
- 6. R: cómo enlazar dos enormes marcos de datos sin quedarse sin memoria
- 7. Haga algo cuando mi servicio WCF comenzó
- 8. ¿Cómo usar grep para obtener algo justo después de `name =`?
- 9. Método de invocación justo antes de que la sesión caduque
- 10. Haga clic en O, y luego haga algo
- 11. código Odd añadió justo antes del cierre etiqueta del cuerpo
- 12. Ejecutando una función justo antes de $ (document) .ready() desencadena
- 13. Tiene problemas para hacer que UIView sizeToFit haga algo significativo
- 14. ¿Cuál es una buena manera de forzar a Perl 5 a quedarse sin memoria rápidamente en OS X?
- 15. ¿Cómo hacer algo antes en el envío?
- 16. Haga algo cuando el ascua se haga con las actualizaciones de DOM
- 17. ¿Cómo obligo a DOM a actualizar/actualizar justo antes y después de una consulta de AJAX?
- 18. ¿Hay alguna manera de invocar una función justo antes de que finalice una aplicación PyQt?
- 19. Sin memoria Problema de pérdida de memoria
- 20. Haga algo si no se encuentra nada con .find() mangosta
- 21. Botones parece desactivado hasta que haga clic algo
- 22. IEnumerable foreach, haga algo diferente para el último elemento
- 23. ¿Cómo puedo hacer que Visual Studio se rompa justo antes de que se detenga el programa?
- 24. JavaScript en <head> o justo antes de</body>?
- 25. ¿Cuánta memoria tiene antes de ser grosera?
- 26. Mathematica quedando sin memoria
- 27. Force UI repintado en Webkit (Safari y Chrome) justo antes de la solicitud Synchronous "Ajax"
- 28. ¿Cómo puedo modificar todo el contenido de la página ASP.NET justo antes de su salida?
- 29. Hacer algo antes de la salida del programa
- 30. ASP.NET MVC evento que ocurre justo antes de llamar a la acción?
posible duplicado de http://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror, http://stackoverflow.com/questions/1692230/is-it-possible-to-catch-out- of-memory-exception-in-java y http://stackoverflow.com/questions/3058198/can-the-jvm-recover-from-an-outofmemoryerror-without-a-restart – BalusC
Se trata de atrapar a OOME, esto se trata de evitar que suceda. –