We are 12th grade cbse class students. we are faced with this exception, and we do not know how to fix this exception.
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)
Increase a bunch of space. Java uses 64 MB heap memory unless you specify a higher maximum. Start your application as follows:
java -Xmx128m MyClass
to have 128 MB.
It looks like you are running the application in the ant assembly. I would separate the building and the execution. Let ant create a batch file that will be used to run the application.
Now you may need to increase the heap of space for the ant itself. This is done using an environment variable (windows solution):
set ANT_OPTS=-Xms512m -Xmx512m
additional literature
You can set the heap size using the following options:
-Xms32m -Xmx128m
check VM parameters here:
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
But I will ask you to check that your heap is swallowing you. You can do this using profiling tools such as:
Your JVM runs out of empty space. Try using the -Xmx switch in the JVM to increase the amount of free space for your program.
-Xmx
java -Xmx256m YourClassName
By default, without JVM start modifications, you have 128 m heaps.
The memory allocated by your program is greater than 128 m.
You can increase the heap space limits:
java -Xms<initial heap size> -Xmx<maximum heap size>
Other answers are not complete and complete answers. This is just a streak. The main reason is that you create an ImageIcon object that creates these threads in the background. I also had this problem due to corrupt jpg. It doesnβt matter if you increase the size of the memory to 1 terabyte, if the user uploads a damaged image, this can take up everything. Instead, use ImageIO and catch the error from memory around the creation:
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; }
See here for more details: http://www.coderanch.com/t/376018/java/java/Image-Fetcher-Threads http://docs.oracle.com/javase/tutorial/2d/images/loadimage.html