Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > OutOfMemoryException but I don't know why

Reply
Thread Tools

OutOfMemoryException but I don't know why

 
 
Jason Cavett
Guest
Posts: n/a
 
      05-16-2008
I am currently writing a portion of an application that is used to
edit and display formulas to the user. The users add the formula
tokens through a point and click interface and the tokens are added as
JLabels to the panel. By existing as JLabels, the users can select
the labels and make modifications to them given the controls
available.

The issue I am having is that, if a user starts to copy and paste the
JLabels, an OutOfMemoryException quickly occurs. I ran some memory
profiling (via TPTP) and the JLabels are taking up quite a bit of
memory, but not nearly enough to cause an OOMEx. I tested this theory
by creating a test program to head into an infinite loop and create a
ton of JLabels and it was up to >30,000 before it decided to hit a
OOMEx. The number of JLabels being copied and pasted are < 1,000.
Nothing else in the application was taking up any significant amount
of memory. I have allocated 512MB to the JVM.

Is there anything that is apparently wrong with this code (this is
where the JLabels are added)? I am really stuck. It's not a memory
leak (based on my research with TPTP) and I'm not creating *THAT* many
JLabels. Any suggestions?

(For the record, "this" class refers to a class that extends JPanel.)

private void setTokens(List<String> tokens) {
List<JLabel> components = new ArrayList<JLabel>();

// convert the tokens to JLabels which will be added to the
panel
for (String tokenString : tokens) {
JLabel tokenLabel = new JLabel(" " + tokenString + " ");
tokenLabel.setSize(tokenLabel.getPreferredSize());
tokenLabel.setOpaque(false);
tokenLabel.addMouseListener(tokenSelection);
tokenLabel.addMouseListener(panelFocusSetter);
components.add(tokenLabel);
}

// get the panel's size
Dimension panelSize = this.calculatePanelSize(components);
this.setPreferredSize(panelSize);
this.setSize(panelSize);

// now populate the panel
// populating with line wrapping turned on requires that the
size of the
// panel is taken into consideration
this.removeAll();
for (JLabel label : components) {
this.add(label);
}
}

Thanks
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
why why why why why Mr. SweatyFinger ASP .Net 4 12-21-2006 01:15 PM
findcontrol("PlaceHolderPrice") why why why why why why why why why why why Mr. SweatyFinger ASP .Net 2 12-02-2006 03:46 PM
I know, I know, I don't know Andries Perl Misc 3 04-23-2004 02:17 AM
OutOfMemoryException =?Utf-8?B?amF6?= ASP .Net 2 12-16-2003 12:41 AM
Base Exception:System.OutOfMemoryException error message =?Utf-8?B?UmlwdWwgSGFuZGE=?= ASP .Net 1 11-18-2003 07:52 AM



Advertisments