I managed to fix the issue on my side, and now the forms a properly
finalizing, but the memory leak is still there. This is the new code:
public void start() {
if(current != null){
current.show();
return;
}
mainForm();
}
private void mainForm() {
Form hi = new Form("Map Test", new
BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER_ABSOLUTE)) {
protected void finalize() throws Throwable {
Log.p("Finaliza Form 1");
}
};
Button btn = new Button("Show Map");
hi.add(BorderLayout.CENTER, btn);
hi.show();
btn.addActionListener((evt) -> {
showMap();
});
}
private void showMap() {
Form hi2 = new Form("Map show", new BorderLayout()) {
protected void finalize() throws Throwable {
Log.p("Finaliza Form 2");
}
};
hi2.setTransitionOutAnimator(CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,
true, 250));
MapContainer map = new MapContainer(MAP_KEY);
hi2.add(BorderLayout.CENTER, map);
hi2.show();
Command back = new Command("Back") {
@Override
public void actionPerformed(ActionEvent evt) {
hi2.removeComponent(map);
mainForm();
}
};
hi2.getToolbar().addCommandToLeftBar(back);
hi2.setBackCommand(back);
}
And this is the stack trace when the app crashes with OOM Error:
[Finalizer] 0:0:20,160 - Codename One revisions:
738cd10cf7f01a97f849e6502c26776cd2c5be74
2381
[Finalizer] 0:0:20,188 - Finaliza Form 2
[Finalizer] 0:0:20,189 - Finaliza Form 1
[Finalizer] 0:0:24,716 - Finaliza Form 2
[Finalizer] 0:0:24,716 - Finaliza Form 1
[Finalizer] 0:0:24,716 - Finaliza Form 2
[Finalizer] 0:0:24,716 - Finaliza Form 1
[Finalizer] 0:0:24,716 - Finaliza Form 2
[Finalizer] 0:0:24,716 - Finaliza Form 1
[Finalizer] 0:0:28,87 - Finaliza Form 1
[Finalizer] 0:0:31,224 - Finaliza Form 1
[Finalizer] 0:0:33,756 - Finaliza Form 1
[Finalizer] 0:0:37,303 - Finaliza Form 1
[Finalizer] 0:0:37,303 - Finaliza Form 2
[Finalizer] 0:0:40,583 - Finaliza Form 2
[Finalizer] 0:0:40,583 - Finaliza Form 1
[Finalizer] 0:0:43,440 - Finaliza Form 2
[Finalizer] 0:0:43,440 - Finaliza Form 1
[Finalizer] 0:0:45,926 - Finaliza Form 2
[Finalizer] 0:0:48,949 - Finaliza Form 1
[Finalizer] 0:0:48,949 - Finaliza Form 2
[Finalizer] 0:0:52,301 - Finaliza Form 1
[Finalizer] 0:0:52,301 - Finaliza Form 2
[Finalizer] 0:0:55,236 - Finaliza Form 2
[Finalizer] 0:0:55,236 - Finaliza Form 1
[Finalizer] 0:0:57,583 - Finaliza Form 2
[Finalizer] 0:0:57,583 - Finaliza Form 1
[Finalizer] 0:1:0,226 - Finaliza Form 2
[Finalizer] 0:1:0,226 - Finaliza Form 2
[Finalizer] 0:1:0,226 - Finaliza Form 1
[Finalizer] 0:1:0,226 - Finaliza Form 2
[Finalizer] 0:1:0,226 - Finaliza Form 2
[Finalizer] 0:1:0,226 - Finaliza Form 1
[Finalizer] 0:1:3,825 - Finaliza Form 1
[Finalizer] 0:1:6,23 - Finaliza Form 2
[Finalizer] 0:1:16,691 - Finaliza Form 1
[Finalizer] 0:1:18,510 - Finaliza Form 2
[Finalizer] 0:1:21,314 - Finaliza Form 1
[Finalizer] 0:1:21,314 - Finaliza Form 2
[Finalizer] 0:1:22,627 - Finaliza Form 1
[Finalizer] 0:1:24,987 - Finaliza Form 2
[Finalizer] 0:1:24,987 - Finaliza Form 1
[Finalizer] 0:1:27,414 - Finaliza Form 2
[Finalizer] 0:1:29,157 - Finaliza Form 1
[Finalizer] 0:1:31,214 - Finaliza Form 1
[Finalizer] 0:1:31,214 - Finaliza Form 2
[Finalizer] 0:1:32,740 - Finaliza Form 2
[Finalizer] 0:1:33,418 - Finaliza Form 1
[Finalizer] 0:1:35,76 - Finaliza Form 2
[Finalizer] 0:1:37,699 - Finaliza Form 1
[Finalizer] 0:1:37,700 - Finaliza Form 2
[Finalizer] 0:1:40,667 - Finaliza Form 1
[Finalizer] 0:1:40,667 - Finaliza Form 2
[Finalizer] 0:1:40,667 - Finaliza Form 1
[Finalizer] 0:1:43,252 - Finaliza Form 2
[Finalizer] 0:1:43,252 - Finaliza Form 2
[Finalizer] 0:1:43,252 - Finaliza Form 1
[Finalizer] 0:1:43,252 - Finaliza Form 2
[Finalizer] 0:1:43,252 - Finaliza Form 1
[Finalizer] 0:1:43,252 - Finaliza Form 2
[Finalizer] 0:1:43,252 - Finaliza Form 1
[Finalizer] 0:1:43,252 - Finaliza Form 2
[Finalizer] 0:1:43,252 - Finaliza Form 1
[Finalizer] 0:1:46,340 - Finaliza Form 1
[Finalizer] 0:1:48,893 - Finaliza Form 1
[Finalizer] 0:1:55,789 - Finaliza Form 1
[Finalizer] 0:1:59,299 - Finaliza Form 1
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 1
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 2
[Finalizer] 0:2:2,624 - Finaliza Form 1
[Finalizer] 0:2:10,873 - Finaliza Form 1
[Finalizer] 0:2:26,855 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:26,856 - Finaliza Form 2
[Finalizer] 0:2:26,856 - Finaliza Form 1
[Finalizer] 0:2:29,912 - Finaliza Form 1
[Finalizer] 0:2:36,457 - Finaliza Form 1
[Finalizer] 0:2:36,458 - Finaliza Form 2
[Finalizer] 0:2:36,458 - Finaliza Form 1
[Finalizer] 0:2:36,458 - Finaliza Form 2
[Finalizer] 0:2:36,458 - Finaliza Form 2
[Finalizer] 0:2:36,458 - Finaliza Form 1
[Finalizer] 0:2:50,789 - Finaliza Form 1
[Finalizer] 0:2:53,354 - Finaliza Form 2
[Finalizer] 0:2:53,355 - Finaliza Form 2
[Finalizer] 0:2:53,355 - Finaliza Form 1
[Finalizer] 0:2:53,355 - Finaliza Form 2
[Finalizer] 0:2:53,355 - Finaliza Form 1
[Finalizer] 0:2:53,355 - Finaliza Form 2
[Finalizer] 0:2:53,355 - Finaliza Form 1
[Finalizer] 0:2:53,355 - Finaliza Form 2
[Finalizer] 0:3:1,787 - Finaliza Form 1
[Finalizer] 0:3:4,92 - Finaliza Form 2
[Finalizer] 0:3:4,92 - Finaliza Form 2
[Finalizer] 0:3:4,92 - Finaliza Form 1
[Finalizer] 0:3:4,92 - Finaliza Form 2
[Finalizer] 0:3:4,92 - Finaliza Form 1
[Finalizer] 0:3:4,92 - Finaliza Form 2
[Finalizer] 0:3:4,92 - Finaliza Form 1
[Finalizer] 0:3:7,157 - Finaliza Form 1
[Finalizer] 0:3:9,990 - Finaliza Form 2
[Finalizer] 0:3:9,990 - Finaliza Form 1
[Finalizer] 0:3:9,991 - Finaliza Form 2
[Finalizer] 0:3:14,303 - Finaliza Form 1
[Finalizer] 0:3:16,239 - Finaliza Form 1
[Finalizer] 0:3:16,239 - Finaliza Form 2
[Finalizer] 0:3:19,755 - Finaliza Form 2
[Finalizer] 0:3:19,756 - Finaliza Form 1
[Finalizer] 0:3:19,757 - Finaliza Form 2
[Finalizer] 0:3:22,355 - Finaliza Form 2
[Finalizer] 0:3:22,355 - Finaliza Form 1
[Finalizer] 0:3:27,11 - Finaliza Form 1
[Finalizer] 0:3:27,24 - Finaliza Form 2
[Finalizer] 0:3:27,25 - Finaliza Form 1
[Finalizer] 0:3:29,647 - Finaliza Form 1
[Finalizer] 0:3:32,405 - Finaliza Form 1
[Finalizer] 0:3:32,405 - Finaliza Form 2
[Finalizer] 0:3:33,952 - Finaliza Form 2
[Finalizer] 0:3:35,787 - Finaliza Form 2
[Finalizer] 0:3:38,391 - Finaliza Form 1
[Finalizer] 0:3:38,391 - Finaliza Form 2
[Finalizer] 0:3:38,391 - Finaliza Form 1
[Finalizer] 0:3:41,122 - Finaliza Form 1
[Finalizer] 0:3:44,393 - Finaliza Form 2
[Finalizer] 0:3:47,230 - Finaliza Form 1
[Finalizer] 0:3:47,230 - Finaliza Form 2
[Finalizer] 0:3:47,230 - Finaliza Form 2
[Finalizer] 0:3:48,537 - Finaliza Form 1
[Finalizer] 0:3:50,379 - Finaliza Form 2
[Finalizer] 0:3:53,643 - Finaliza Form 2
[Finalizer] 0:3:53,660 - Finaliza Form 1
[Finalizer] 0:3:56,580 - Finaliza Form 2
[Finalizer] 0:3:56,581 - Finaliza Form 1
[Finalizer] 0:3:58,89 - Finaliza Form 1
[Finalizer] 0:4:0,176 - Finaliza Form 1
[Finalizer] 0:4:0,176 - Finaliza Form 2
[Finalizer] 0:4:2,471 - Finaliza Form 2
[Finalizer] 0:4:3,697 - Finaliza Form 1
[Finalizer] 0:4:6,6 - Finaliza Form 1
[Finalizer] 0:4:6,6 - Finaliza Form 2
[Finalizer] 0:4:8,615 - Finaliza Form 2
[Finalizer] 0:4:10,36 - Finaliza Form 1
[Finalizer] 0:4:12,113 - Finaliza Form 1
[Finalizer] 0:4:12,113 - Finaliza Form 2
[Finalizer] 0:4:14,461 - Finaliza Form 2
[Finalizer] 0:4:16,632 - Finaliza Form 1
[Finalizer] 0:4:20,579 - Finaliza Form 1
[Finalizer] 0:4:20,579 - Finaliza Form 2
[Finalizer] 0:4:24,833 - Finaliza Form 1
[Finalizer] 0:4:24,834 - Finaliza Form 2
[Finalizer] 0:4:27,765 - Finaliza Form 2
[Finalizer] 0:4:28,983 - Finaliza Form 1
[Finalizer] 0:4:32,703 - Finaliza Form 2
[Finalizer] 0:4:35,674 - Finaliza Form 2
[Finalizer] 0:4:35,674 - Finaliza Form 1
[Finalizer] 0:4:37,726 - Finaliza Form 1
[Finalizer] 0:4:39,4 - Finaliza Form 2
[Finalizer] 0:4:39,811 - Finaliza Form 1
[Finalizer] 0:4:41,615 - Finaliza Form 2
[Finalizer] 0:4:42,219 - Finaliza Form 1
[Finalizer] 0:4:44,895 - Finaliza Form 2
[Finalizer] 0:4:45,576 - Finaliza Form 1
[Finalizer] 0:4:47,475 - Finaliza Form 2
[Finalizer] 0:4:47,946 - Finaliza Form 1
[Finalizer] 0:4:50,113 - Finaliza Form 2
[Finalizer] 0:4:50,693 - Finaliza Form 1
[Finalizer] 0:4:52,860 - Finaliza Form 2
[Finalizer] 0:4:54,60 - Finaliza Form 1
[Finalizer] 0:4:55,921 - Finaliza Form 2
[Finalizer] 0:4:57,581 - Finaliza Form 1
[Finalizer] 0:4:58,461 - Finaliza Form 2
[EDT] 0:4:59,865 - An exception occurred during transition paint this might
be valid in case of a resize in the middle of a transition
[EDT] 0:4:59,867 - Exception: java.lang.OutOfMemoryError - Java heap space
at com.codename1.ui.Container.paint(Container.java:1439)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1564)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1538)
at com.codename1.ui.Component.paintInternal(Component.java:1513)
at com.codename1.ui.Container.paint(Container.java:1439)
[EDT] 0:5:0,438 - An exception occurred during transition paint this might
be valid in case of a resize in the middle of a transition
[EDT] 0:5:0,439 - Exception: java.lang.OutOfMemoryError - Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:75)
at java.awt.image.Raster.createPackedRaster(Raster.java:467)
at
java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1032)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:333)
at
sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:557)
at
sun.java2d.loops.GraphicsPrimitive.convertFrom(GraphicsPrimitive.java:541)
at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:189)
at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:204)
at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)
at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)
at sun.java2d.pipe.DrawImage.tryCopyOrScale(DrawImage.java:310)
at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:258)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:76)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)
at
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1586)
at
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent.paint(JComponent.java:1042)
at
com.codename1.impl.javase.SEBrowserComponent$2$1.paint(SEBrowserComponent.java:136)
at
com.codename1.impl.javase.JavaSEPort.drawNativePeer(JavaSEPort.java:4406)
at
com.codename1.impl.javase.SEBrowserComponent.paint(SEBrowserComponent.java:598)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1564)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1538)
at com.codename1.ui.Component.paintInternal(Component.java:1513)
at com.codename1.ui.Container.paint(Container.java:1439)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1564)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1538)
at com.codename1.ui.Component.paintInternal(Component.java:1513)
at com.codename1.ui.Container.paint(Container.java:1439)
[EDT] 0:5:0,438 - An exception occurred during transition paint this might
be valid in case of a resize in the middle of a transition
[EDT] 0:5:0,439 - Exception: java.lang.OutOfMemoryError - Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferInt.<init>(DataBufferInt.java:75)
at java.awt.image.Raster.createPackedRaster(Raster.java:467)
at java.awt.image.DirectColorModel.createCompatibleWritableRaster
(DirectColorModel.java:1032)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:333)
at sun.java2d.loops.GraphicsPrimitive.convertFrom(
GraphicsPrimitive.java:557)
at sun.java2d.loops.GraphicsPrimitive.convertFrom(
GraphicsPrimitive.java:541)
at sun.java2d.loops.MaskBlit$General.MaskBlit(MaskBlit.java:189)
at sun.java2d.loops.Blit$GeneralMaskBlit.Blit(Blit.java:204)
at sun.java2d.pipe.DrawImage.blitSurfaceData(DrawImage.java:959)
at sun.java2d.pipe.DrawImage.renderImageCopy(DrawImage.java:577)
at sun.java2d.pipe.DrawImage.tryCopyOrScale(DrawImage.java:310)
at sun.java2d.pipe.DrawImage.transformImage(DrawImage.java:258)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:76)
at sun.java2d.pipe.DrawImage.copyImage(DrawImage.java:1014)
at sun.java2d.pipe.ValidatePipe.copyImage(ValidatePipe.java:186)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3318)
at sun.java2d.SunGraphics2D.drawImage(SunGraphics2D.java:3296)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(
RepaintManager.java:1586)
at javax.swing.RepaintManager$PaintManager.paint(
RepaintManager.java:1502)
at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
at javax.swing.JComponent.paint(JComponent.java:1042)
at com.codename1.impl.javase.SEBrowserComponent$2$1.paint(
SEBrowserComponent.java:136)
at com.codename1.impl.javase.JavaSEPort.drawNativePeer(
JavaSEPort.java:4406)
at com.codename1.impl.javase.SEBrowserComponent.paint(
SEBrowserComponent.java:598)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1564)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1538)
at com.codename1.ui.Component.paintInternal(Component.java:1513)
at com.codename1.ui.Container.paint(Container.java:1439)
at com.codename1.ui.Component.internalPaintImpl(Component.java:1564)
at com.codename1.ui.Component.paintInternalImpl(Component.java:1538)
at com.codename1.ui.Component.paintInternal(Component.java:1513)
at com.codename1.ui.Container.paint(Container.java:1439)
[Finalizer] 0:5:0,730 - Finaliza Form 1
[Finalizer] 0:5:4,605 - Finaliza Form 2
[Finalizer] 0:5:5,34 - Finaliza Form 1
[Finalizer] 0:5:43,1 - Finaliza Form 2
[EDT] 0:5:43,245 - Exception: java.lang.OutOfMemoryError - Java heap space
java.lang.OutOfMemoryError: Java heap space
[EDT] 0:5:43,264 - Exception in AppName version 1.0
[EDT] 0:5:43,264 - OS and
[EDT] 0:5:43,264 - Error java.lang.OutOfMemoryError: Java heap space
[EDT] 0:5:43,264 - Current Form null
[EDT] 0:5:43,264 - Exception: java.lang.OutOfMemoryError - Java heap space
java.lang.OutOfMemoryError: Java heap space
--
You received this message because you are subscribed to the Google Groups
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit
https://groups.google.com/d/msgid/codenameone-discussions/529815ec-5f0b-4a06-90ce-45363a56e306%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.