2010-08-19 14 views
6

Estamos cbse estudiantes de 12 ° grado de ip ... nos enfrentamos a esta excepción y no sabemos cómo rectificar esta excepción.java.lang.out of memory error

run: 
Exception in thread "Image Fetcher 1" java.lang.OutOfMemoryError: Java heap space 
     at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41) 
     at java.awt.image.Raster.createPackedRaster(Raster.java:458) 
     at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) 
     at sun.awt.image.ImageRepresentation.createBufferedImage(ImageRepresentation.java:230) 
     at sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:484) 
     at sun.awt.image.ImageDecoder.setPixels(ImageDecoder.java:120) 
     at sun.awt.image.JPEGImageDecoder.sendPixels(JPEGImageDecoder.java:97) 
     at sun.awt.image.JPEGImageDecoder.readImage(Native Method) 
     at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:119) 
     at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:246) 
     at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172) 
     at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136) 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
     at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41) 
     at java.awt.image.Raster.createPackedRaster(Raster.java:458) 
     at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) 
     at sun.awt.image.SunVolatileImage.getBackupImage(SunVolatileImage.java:225) 
     at sun.awt.image.VolatileSurfaceManager.getBackupSurface(VolatileSurfaceManager.java:252) 
     at sun.awt.image.VolatileSurfaceManager.initialize(VolatileSurfaceManager.java:108) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:72) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:82) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:93) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:87) 
     at sun.awt.windows.WComponentPeer.createVolatileImage(WComponentPeer.java:604) 
     at java.awt.Component.createVolatileImage(Component.java:3316) 
     at java.awt.Component$BltBufferStrategy.createBackBuffers(Component.java:4038) 
     at java.awt.Component$BltBufferStrategy.<init>(Component.java:3983) 
     at java.awt.Component$BltSubRegionBufferStrategy.<init>(Component.java:4236) 
     at java.awt.Component.createBufferStrategy(Component.java:3567) 
     at java.awt.Window.createBufferStrategy(Window.java:3012) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:844) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:795) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.getBufferStrategy(BufferStrategyPaintManager.java:728) 
     at javax.swing.BufferStrategyPaintManager.prepare(BufferStrategyPaintManager.java:505) 
     at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:263) 
     at javax.swing.RepaintManager.paint(RepaintManager.java:1217) 
     at javax.swing.JComponent.paint(JComponent.java:1013) 
     at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21) 
     at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) 
     at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) 
     at java.awt.Container.paint(Container.java:1780) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714) 
     at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694) 
     at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
     at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41) 
     at java.awt.image.Raster.createPackedRaster(Raster.java:458) 
     at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) 
     at sun.awt.image.SunVolatileImage.getBackupImage(SunVolatileImage.java:225) 
     at sun.awt.image.VolatileSurfaceManager.getBackupSurface(VolatileSurfaceManager.java:252) 
     at sun.awt.image.VolatileSurfaceManager.initialize(VolatileSurfaceManager.java:108) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:72) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:82) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:93) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:87) 
     at sun.awt.windows.WComponentPeer.createVolatileImage(WComponentPeer.java:604) 
     at java.awt.Component.createVolatileImage(Component.java:3316) 
     at java.awt.Component$BltBufferStrategy.createBackBuffers(Component.java:4038) 
     at java.awt.Component$BltBufferStrategy.<init>(Component.java:3983) 
     at java.awt.Component$BltSubRegionBufferStrategy.<init>(Component.java:4236) 
     at java.awt.Component.createBufferStrategy(Component.java:3567) 
     at java.awt.Window.createBufferStrategy(Window.java:3012) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:844) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:795) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.getBufferStrategy(BufferStrategyPaintManager.java:728) 
     at javax.swing.BufferStrategyPaintManager.prepare(BufferStrategyPaintManager.java:505) 
     at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:263) 
     at javax.swing.RepaintManager.paint(RepaintManager.java:1217) 
     at javax.swing.JComponent._paintImmediately(JComponent.java:5070) 
     at javax.swing.JComponent.paintImmediately(JComponent.java:4880) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714) 
     at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694) 
     at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) 
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
     at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:41) 
     at java.awt.image.Raster.createPackedRaster(Raster.java:458) 
     at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015) 
     at sun.awt.image.SunVolatileImage.getBackupImage(SunVolatileImage.java:225) 
     at sun.awt.image.VolatileSurfaceManager.getBackupSurface(VolatileSurfaceManager.java:252) 
     at sun.awt.image.VolatileSurfaceManager.initialize(VolatileSurfaceManager.java:108) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:72) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:82) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:93) 
     at sun.awt.image.SunVolatileImage.<init>(SunVolatileImage.java:87) 
     at sun.awt.windows.WComponentPeer.createVolatileImage(WComponentPeer.java:604) 
     at java.awt.Component.createVolatileImage(Component.java:3316) 
     at java.awt.Component$BltBufferStrategy.createBackBuffers(Component.java:4038) 
     at java.awt.Component$BltBufferStrategy.<init>(Component.java:3983) 
     at java.awt.Component$BltSubRegionBufferStrategy.<init>(Component.java:4236) 
     at java.awt.Component.createBufferStrategy(Component.java:3567) 
     at java.awt.Window.createBufferStrategy(Window.java:3012) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:844) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.createBufferStrategy(BufferStrategyPaintManager.java:795) 
     at javax.swing.BufferStrategyPaintManager$BufferInfo.getBufferStrategy(BufferStrategyPaintManager.java:728) 
     at javax.swing.BufferStrategyPaintManager.prepare(BufferStrategyPaintManager.java:505) 
     at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:263) 
     at javax.swing.RepaintManager.paint(RepaintManager.java:1217) 
     at javax.swing.JComponent._paintImmediately(JComponent.java:5070) 
     at javax.swing.JComponent.paintImmediately(JComponent.java:4880) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803) 
     at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714) 
     at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694) 
     at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128) 
     at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space 
BUILD SUCCESSFUL (total time: 25 seconds) 
+0

No es claro a partir de la traza de la pila cuál es la causa de este (por ejemplo, no hay clases de usuarios presentes en el seguimiento de la pila). ¿Hay más rastros de pila disponibles? ¿Qué está causando esto? – naikus

Respuesta

8

Aumente el espacio del montón. Java usa memoria de almacenamiento de 64MByte si no especifica un máximo superior. Comience su aplicación como esta:

java -Xmx128m MyClass 

que tienen 128 MByte.


Parece que inicia la aplicación dentro de una compilación de ant. Yo separaría el edificio y la ejecución. Deja que hormiga cree un archivo por lotes que se utilizará para iniciar la aplicación.

Ahora puede que tenga que aumentar el espacio de pila para la hormiga misma. Esto se hace con una variable de entorno (solución mostrada para Windows):

set ANT_OPTS=-Xms512m -Xmx512m 

Lecturas

+0

El tamaño de almacenamiento dinámico predeterminado depende de su versión de JVM, sus argumentos de JVM y (en algunos casos) la cantidad de memoria "física" que tiene su "máquina". –

+0

De hecho, los switches -X son específicos de JVM y pueden variar de JVM a JVM; el interruptor de control del montón que se muestra es para la JVM Sun (ahora Oracle), aunque en la práctica todas las JVM probablemente utilicen el mismo interruptor. –

+0

OK esto me lo arregló. Desafortunadamente estaba usando MAVEN_OPTS que todavía no funcionaba porque estaba usando surefire en el modo "bifurcación" que aparentemente no usa MAVEN_OPTS por defecto, pero especificándolos y finalmente esta falla en el montón particular se ha ido http://stackoverflow.com/ questions/4066424/java-lang-outofmemoryerror-java-heap-space-in-maven – rogerdpack

0

Su JVM se está quedando sin espacio de almacenamiento dinámico. Intente usar el interruptor -Xmx en la JVM para aumentar la cantidad de espacio disponible para su programa.

java -Xmx256m YourClassName 
0

De forma predeterminada, sin modifiyin JVM start params, tiene 128m de espacio en el montón.

La memoria asignada por su programa es mayor que este 128m.

Puede aumentar sus límites de espacio de almacenamiento dinámico:

java -Xms<initial heap size> -Xmx<maximum heap size> 
+0

92MB en Java 6. –

0

Las otras respuestas no son respuestas completas y completas. Son simplemente curitas. La causa principal es porque está creando un objeto ImageIcon, que crea esos hilos en el fondo. También tuve este problema debido a JPG corruptos. No importa si aumenta el tamaño de la memoria a 1 terabyte, si un usuario carga una imagen dañada, podría quitar todo.En su lugar, utilice ImageIO y coger el error de memoria en torno a la creación:

try { // catch OutOfMemoryError for corrupt JPG 
    BufferedImage inImage = ImageIO.read(new File(jpgAbsPath)); 
} catch (OutOfMemoryError oome) { 
    logger.log(Level.SEVERE, "Out of memory error when trying to read image " + jpgAbsPath +" .", oome); 
    return; 
} 

Vea aquí para más: http://www.coderanch.com/t/376018/java/java/Image-Fetcher-Threads http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html