Note that there are some explanatory texts on larger screens.

plurals
  1. POHEAPSPACE ERROR: cannot figure out what is causing the error
    primarykey
    data
    text
    <p>Would anyone mind having a look at these bits of code and see if there is a memory leak in them, it isn't going to be overly large but my program keeps crashing after a while of running and I don't know how to use viualvm even though I have been reading up on it for several days now and haven't the slightest idea what I am looking for in the heap dumps and so on. thanks for your help, ps I know I have posted far to muchg code but i dont know what else to do so that you can hopefully see where the problem arises for me. If it helps I can email you the full program to take a look at. Thanks very much for any help you can give.</p> <pre><code> public class extraScreenPanel { static JPanel screenPanel = new JPanel(new BorderLayout()); public static JPanel extraScreenPanel(int dispNum) { JLabel label = new JLabel("" + dispNum + ""); label.setPreferredSize(new Dimension(800, 600)); label.setVerticalAlignment( SwingConstants.TOP ); screenPanel = imgDisp(dispNum); label.setForeground(Color.white); label.setFont(new Font("Serif", Font.BOLD, 200)); screenPanel.add(label, BorderLayout.PAGE_END ); return screenPanel; } public static JPanel imgDisp(int picNum) { String ref = "C:/PiPhotoPic/pic16.jpg";; BufferedImage loadImg = loadImage(ref); JImagePanel panel = new JImagePanel(loadImg, 0, 0); panel.setPreferredSize(new Dimension(800, 600)); return panel; } public static class JImagePanel extends JPanel{ private BufferedImage image; int x, y; public JImagePanel(BufferedImage image, int x, int y) { super(); this.image = image; this.x = x; this.y = y; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(image, x, y, null); } } public static BufferedImage loadImage(String ref) { BufferedImage bimg = null; try { bimg = javax.imageio.ImageIO.read(new File(ref)); } catch (Exception e) { e.printStackTrace(); } BufferedImage bimg2 = resize(bimg,800,600);//set these to the resolution of extra screens return bimg2; } public static BufferedImage resize(BufferedImage img, int newW, int newH) { int w = img.getWidth(); int h = img.getHeight(); BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType()); Graphics2D g = dimg.createGraphics(); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null); g.dispose(); return dimg; } } </code></pre> <p>Another part of the method</p> <pre><code>public class piPhoto { static int mostRecent = 0; static int dispNum = 0; static int lastDisp = 0; static JPanel picPanel = imgDisp.imgDisp(dispNum); static JFrame frame = new JFrame("Pi Photography"); static JPanel cornerPanel = new JPanel(); static JPanel bottomPanel = new JPanel(); static JPanel menuPanel = new JPanel(new BorderLayout()); static JPanel currentNumPanel = currentNumDisp.currentNumDisp(dispNum); static JPanel printPanel = printOptions.printOptions(); static JPanel buttonPanel = updateButtonPanel.updateButtonPanel(mostRecent); static JPanel screen1Panel = new JPanel(); static JPanel screen2Panel = new JPanel(); static JPanel screen3Panel = new JPanel(); static JPanel screen4Panel = new JPanel(); static JPanel screenPanel12 = new JPanel(new BorderLayout()); static JPanel screenPanel123 = new JPanel(new BorderLayout()); static JPanel screenPanel1234 = new JPanel(new BorderLayout()); static JPanel screensPanel = new JPanel(new BorderLayout()); static JPanel deskScreen = new JPanel(); static JPanel wholePanel = new JPanel(new BorderLayout()); static JPanel wholePanel2 = new JPanel(new BorderLayout()); public static void launchPiPhoto() { launchNC4.launch(); bottomPanel.setPreferredSize(new Dimension(1440, 200)); buttonPanel.setPreferredSize(new Dimension(1120, 200)); cornerPanel.setPreferredSize(new Dimension(300,200)); screen1Panel.setPreferredSize(new Dimension(800,600)); screen2Panel.setPreferredSize(new Dimension(800,600)); screen3Panel.setPreferredSize(new Dimension(800,600)); screen4Panel.setPreferredSize(new Dimension(800,600)); screensPanel.setPreferredSize(new Dimension(3200,600)); deskScreen.setPreferredSize(new Dimension(800,600)); wholePanel.setPreferredSize(new Dimension(4640,900)); wholePanel2.setPreferredSize(new Dimension(5440,900)); cornerPanel.setLayout(new BoxLayout(cornerPanel, BoxLayout.PAGE_AXIS)); picPanel.setPreferredSize(new Dimension(1120, 620)); //Menu Panel Set-up cornerPanel.add(currentNumPanel); bottomPanel.add(buttonPanel); bottomPanel.add(cornerPanel); menuPanel.setPreferredSize(new Dimension(1440, 840)); menuPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); menuPanel.add(bottomPanel, BorderLayout.PAGE_END); menuPanel.add(picPanel, BorderLayout.LINE_START); menuPanel.add(printPanel, BorderLayout.LINE_END); screen1Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 3); screen2Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 2); screen3Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 1); screen4Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent); screenPanel12.add(screen1Panel, BorderLayout.LINE_START); screenPanel12.add(screen2Panel, BorderLayout.LINE_END); screenPanel123.add(screenPanel12, BorderLayout.LINE_START); screenPanel123.add(screen3Panel, BorderLayout.LINE_END); screenPanel1234.add(screenPanel123, BorderLayout.LINE_START); screenPanel1234.add(screen4Panel, BorderLayout.LINE_END); screensPanel.add(screenPanel1234, BorderLayout.LINE_END); deskScreen = extraScreenPanel.extraScreenPanel(dispNum); wholePanel.add(menuPanel, BorderLayout.LINE_START); wholePanel.add(screensPanel, BorderLayout.LINE_END); wholePanel2.add(wholePanel, BorderLayout.LINE_START); wholePanel2.add(deskScreen, BorderLayout.LINE_END); frame.add(wholePanel2); //Frame set-up and Initializing JFrame.setDefaultLookAndFeelDecorated(true); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); newImageRecieved.runCheck(); } public static void repaintButtonPanel() { bottomPanel.removeAll(); bottomPanel.setPreferredSize(new Dimension(1440, 200)); buttonPanel = updateButtonPanel.updateButtonPanel(mostRecent); buttonPanel.setPreferredSize(new Dimension(1120, 200)); cornerPanel.add(currentNumPanel); bottomPanel.add(buttonPanel); bottomPanel.add(cornerPanel); menuPanel.add(bottomPanel, BorderLayout.PAGE_END); frame.validate(); } public static void repaintScreens() { wholePanel.remove(screensPanel); screen1Panel.removeAll(); screen1Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent); screen2Panel.removeAll(); screen2Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 1); screen3Panel.removeAll(); screen3Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 2); screen4Panel.removeAll(); screen4Panel = extraScreenPanel.extraScreenPanel(piPhoto.mostRecent - 3); screenPanel12.add(screen1Panel, BorderLayout.LINE_START); screenPanel12.add(screen2Panel, BorderLayout.LINE_END); screenPanel123.add(screenPanel12, BorderLayout.LINE_START); screenPanel123.add(screen3Panel, BorderLayout.LINE_END); screenPanel1234.add(screenPanel123, BorderLayout.LINE_START); screenPanel1234.add(screen4Panel, BorderLayout.LINE_END); screensPanel.add(screenPanel1234, BorderLayout.LINE_END); wholePanel.add(menuPanel, BorderLayout.LINE_START); wholePanel.add(screensPanel, BorderLayout.LINE_END); frame.validate(); } } </code></pre> <p>the part that checks to see if new images are added to the file yet</p> <pre><code> public class newImageRecieved { static int count = 0; public static void runCheck() { int delay = 500; ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { newImageRecieved(piPhoto.mostRecent+1); } }; new Timer(delay, taskPerformer).start(); } public static void newImageRecieved(int picNum) { String url[] = new String[5000]; String part1; url[0] = "C:/PiPhotoPic/pic16.jpg"; for(Integer i=1;i&lt;5000;i++){ if(i&lt;10){part1 = "C:/temp/new0000000";} else if(i&lt;100){part1 = "C:/temp/new000000";} else if(i&lt;1000){part1 = "C:/temp/new00000";} else {part1 = "C:/temp/new00000";} String num = Integer.toString(i); url[i]= part1 + num + ".jpg"; } if(picNum&lt;0){picNum=0;} String ref = url[picNum]; piPhoto.frame.validate(); boolean exists = (new File(ref)).exists(); if(exists == true) { while (exists == true) { piPhoto.updateMostRecent(picNum); ref = url[picNum + 1]; picNum = picNum + 1; exists = (new File(ref)).exists(); } piPhoto.updateMostRecent(picNum-1); piPhoto.repaintButtonPanel(); piPhoto.repaintScreens(); count=0; } // } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload