AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Hi,
I have written a java application with different classes. when I instanciate an object of one of this classes in another class, this message appearsException in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space". I checked to instanciate the object in other classes of the same package, I see that in this case there is no error. what might be the reason?
Regards,
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Without posting code its anyone's guess what's going on. Are you reading large files/information into memory? Creating a bucketload of objects? One way to try and alleviate the problem is to increase the default heap size on the command line using the -Xmx parameter (eg java -Xmx512m yourProgram).
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
this is a code, the problem is with the line in Bold
package LiveLectureNotes;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.KeyEvent;
public class LecturerArea extends JFrame{
JTextPane lecturenote;
private static final long serialVersionUID = 1L;
public LecturerArea(String Title) {
super(Title);
setLayout(new BorderLayout());
//Create a text pane.
lecturenote = createTextPane();
JScrollPane paneScrollPane = new JScrollPane(lecturenote);
paneScrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
paneScrollPane.setPreferredSize(new Dimension(400,750));
paneScrollPane.setMinimumSize(new Dimension(10, 10));
//Create a text pane.
JTextPane searchresult =new JTextPane();
JScrollPane paneScrollPane1 = new JScrollPane(searchresult);
paneScrollPane1.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
paneScrollPane1.setPreferredSize(new Dimension(400,750));
paneScrollPane1.setMinimumSize(new Dimension(10, 10));
//Put the editor pane and the text pane in a split pane.
JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
paneScrollPane,
paneScrollPane1);
splitPane.setOneTouchExpandable(true);
splitPane.setResizeWeight(0.5);
JPanel leftPane = new JPanel(new GridLayout());
leftPane.add(splitPane);
leftPane.setBorder(BorderFactory.createCompoundBor der(
BorderFactory.createTitledBorder(""),
BorderFactory.createEmptyBorder(5,5,5,5)));
add(leftPane, BorderLayout.WEST);
//add textarea
JTextArea linkcontent = new JTextArea(50,31);
JScrollPane linkcontentscroll = new JScrollPane(linkcontent, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,Scro llPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
linkcontentscroll.setPreferredSize(new Dimension(400,750));
linkcontentscroll.setMinimumSize(new Dimension(10, 10));
JPanel rightpane= new JPanel();
rightpane.add(linkcontent);
add(rightpane, BorderLayout.EAST);
//add buttons
JButton[] buttons = new JButton[4];
buttons[0] = new JButton("Uploading Lecture Notes");
buttons[1] = new JButton("Automatic Link Discovery");
buttons[2] = new JButton("Question Answering");
buttons[3] = new JButton("Reviewing Suggested Links ");
buttons[0].setMnemonic(KeyEvent.VK_U);
buttons[1].setMnemonic(KeyEvent.VK_A);
buttons[2].setMnemonic(KeyEvent.VK_Q);
buttons[3].setMnemonic(KeyEvent.VK_R);
JPanel uppane = new JPanel();
for (int i=0; i<=3; i++){
uppane.add(buttons[i]);
}
add(uppane, BorderLayout.NORTH);
UpLoadListener listener= new UpLoadListener();
buttons[0].addActionListener(listener);
}
private JTextPane createTextPane() {
String[] initString =
{ ""
};
String[] initStyles =
{ "regular", "italic", "bold", "small", "large",
"regular", "button", "regular", "icon",
"regular"
};
JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();
try {
for (int i=0; i < initString.length; i++) {
doc.insertString(doc.getLength(), initString[i],
doc.getStyle(initStyles[i]));
}
} catch (BadLocationException ble) {
System.err.println("Couldn't insert initial text into text pane.");
}
return textPane;
}
}
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Sun Microsystems nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package LiveLectureNotes;
import java.io.*;
import java.util.Vector;
import java.awt.event.*;
import javax.swing.*;
public class UpLoadListener extends JPanel implements ActionListener {
[B]LecturerArea note = new LecturerArea("Live Lecture Notes");[/B]
private static final long serialVersionUID = 1L;
Vector<String> data = new Vector<String>(50, 10);
JFileChooser fc;
BufferedReader mybuffer= null;
int i=0;
public UpLoadListener() {
//Create a file chooser
fc = new JFileChooser();
}
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getActionCommand().equals("Uploading Lecture Notes")) {
int returnVal = fc.showOpenDialog(UpLoadListener.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
FileReader myhtml = null;
try {
myhtml = new FileReader(file.getPath());
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mybuffer = new BufferedReader(myhtml);
try {
while(mybuffer.readLine() != null){
data.add(mybuffer.readLine());
System.out.println(data.elementAt(i));
i++;
}
}
catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();}
}
}
}
public static void main(String[] args) {
//creating and showing this application's GUI.
SwingUtilities.invokeLater(new Runnable() {
public void run() {
//Turn off metal's use of bold fonts
UIManager.put("swing.boldMetal", Boolean.FALSE);
}
});
}
}
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
The java stack trace should give you more precise info on the line where the Exception is thrown (I assume the main method you posted is abbreviated somehow because as posted it doesn't do anything). A rough scan of the code and I don't see anything in particular that jumps out. I'll re-assert that if you are reading a large file you may need to increase the maximum heap size with -Xmx (see previous post).
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
there are some other classes in this package that I haven't sent them for you. when I execute the program without that mentioned line, it works properly and reads my file and writes it on the console, but when I want to create an object from LecturerArea class, IT SHOWS THE ERROR.
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
sorry for bothering. I think the problem is that I instanciate a LecturereArea object in UploadListener class and agian I instanciatean UpLoadListenr object in LecturerArea class, and it causes an infinite loop? is that the point? what should I do if I need to do so?
Re: AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Quote:
Originally Posted by
nasi
sorry for bothering. I think the problem is that I instanciate a LecturereArea object in UploadListener class and agian I instanciatean UpLoadListenr object in LecturerArea class, and it causes an infinite loop? is that the point? what should I do if I need to do so?
Yup, that seems like it may be the issue. You can pass a reference of UpLoadListener to your LectureArea and directly add the listeners that way....or somehow manage your ActionListener a bit differently