Menu

#616 Open Folder leads to OutOfMemoryError

4: Serious
open
nobody
5
2007-10-17
2007-10-17
Dan Smith
No

java.lang.OutOfMemoryError: Java heap space

Performing "Open Folder" to open a large number of files within a large project leads to an OutOfMemoryError. Something's wrong with the caching system, perhaps?

Don't know if this would be reproducible in flat file mode or not, given a large enough set of code. It *can* be reproduced (in my configuration, at least) as follows:
- Create a new project for the DrJava sources.
- Invoke "Open Folder" on the DrJava src directory.
- Save the project.
- Invoke "Open Folder" a second time on the DrJava src directory.

Not sure why this is such a heavyweight operation, even when it succeeds. Is there a good reason to do anything more than a recursive directory listing, grabbing the relevant file names?

***********************

System Properties:
DrJava Version 20070828-1759
drjava.debug.port = 59919
java.runtime.name = Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path = /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries
java.vm.version = 1.5.0_07-87
awt.nativeDoubleBuffering = true
gopherProxySet = false
java.vm.vendor = "Apple Computer, Inc."
java.vendor.url = http://apple.com/
path.separator = :
java.vm.name = Java HotSpot(TM) Client VM
file.encoding.pkg = sun.io
user.country = US
sun.os.patch.level = unknown
java.vm.specification.name = Java Virtual Machine Specification
user.dir = <anonymized user.dir>
java.runtime.version = 1.5.0_07-164
java.awt.graphicsenv = apple.awt.CGraphicsEnvironment
java.endorsed.dirs = /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed
os.arch = ppc
edu.rice.cs.drjava.icon = <anonymized user.dir>/DrJava-20070828.app/Contents/Resources/DrJava.icns
java.io.tmpdir = /tmp
line.separator = "\u000a"
java.vm.specification.vendor = Sun Microsystems Inc.
os.name = Mac OS X
apple.laf.useScreenMenuBar = true
sun.jnu.encoding = MacRoman
java.library.path = <anonymized user.dir>/DrJava-20070828.app/Contents/Resources/Java:/System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Resources:.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
java.specification.name = Java Platform API Specification
java.class.version = 49.0
sun.management.compiler = HotSpot Client Compiler
os.version = 10.4.10
user.home = <anonymized user.home>
user.timezone = America/Chicago
java.awt.printerjob = apple.awt.CPrinterJob
file.encoding = MacRoman
java.specification.version = 1.5
java.class.path = <anonymized user.dir>/DrJava-20070828.app/Contents/Resources/Java/drjava.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar
user.name = <anonymized user.name>
apple.awt.graphics.UseQuartz = true
java.vm.specification.version = 1.0
java.home = /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home
sun.arch.data.model = 32
user.language = en
java.specification.vendor = Sun Microsystems Inc.
awt.toolkit = apple.awt.CToolkit
java.vm.info = mixed mode, sharing
java.version = 1.5.0_07
java.ext.dirs = /Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext
sun.boot.class.path = /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar:/System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Resources/LauncherSupport.jar
java.vendor = Apple Computer, Inc.
file.separator = /
java.vendor.url.bug = http://developer.apple.com/java/
sun.io.unicode.encoding = UnicodeBig
sun.cpu.endian = big
java.rmi.server.hostname = 127.0.0.1
mrj.version = 1040.1.5.0_07-164
sun.awt.exception.handler = edu.rice.cs.drjava.ui.DrJavaErrorHandler
sun.cpu.isalist =

Used memory: about 46.78 megabytes
Free memory: about 16.53 megabytes
Total memory: about 63.31 megabytes
Total memory can expand to: about 63.31 megabytes

Discussion

  • Dan Smith

    Dan Smith - 2008-01-23

    Logged In: YES
    user_id=1060117
    Originator: YES

    Here's a stack trace:

    java.lang.OutOfMemoryError: Java heap space
    at java.util.WeakHashMap$KeySet.iterator(WeakHashMap.java:809)
    at edu.rice.cs.plt.collect.WeakHashSet.iterator(WeakHashSet.java:127)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.ModelList$Iterator.notifyOfInsert(ModelList.java:282)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.ModelList$Iterator.insert(ModelList.java:218)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.AbstractReducedModel._insertNewGap(AbstractReducedModel.java:232)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.AbstractReducedModel._insertGap(AbstractReducedModel.java:157)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.ReducedModelBrace.insertChar(ReducedModelBrace.java:67)
    at edu.rice.cs.drjava.model.definitions.reducedmodel.ReducedModelControl.insertChar(ReducedModelControl.java:83)
    at edu.rice.cs.drjava.model.AbstractDJDocument._addCharToReducedModel(AbstractDJDocument.java:424)
    at edu.rice.cs.drjava.model.AbstractDJDocument.access$000(AbstractDJDocument.java:70)
    at edu.rice.cs.drjava.model.AbstractDJDocument$InsertCommand.run(AbstractDJDocument.java:1686)
    at edu.rice.cs.drjava.model.AbstractDJDocument.insertUpdate(AbstractDJDocument.java:1575)
    at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:751)
    at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:711)
    at edu.rice.cs.util.text.SwingDocument.insertString(SwingDocument.java:163)
    at edu.rice.cs.drjava.model.AbstractDJDocument.insertString(AbstractDJDocument.java:1619)
    at edu.rice.cs.drjava.model.definitions.DefinitionsDocument.insertString(DefinitionsDocument.java:327)
    at javax.swing.text.DefaultEditorKit.read(DefaultEditorKit.java:254)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc$2.make(AbstractGlobalModel.java:3033)
    at edu.rice.cs.drjava.model.cache.DocumentCache$DocManager.makeDocument(DocumentCache.java:181)
    at edu.rice.cs.drjava.model.cache.DocumentCache$DocManager.getDocument(DocumentCache.java:205)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.getDocument(AbstractGlobalModel.java:2798)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc._locateClassFile(AbstractGlobalModel.java:3417)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$ConcreteOpenDefDoc.checkIfClassFileInSync(AbstractGlobalModel.java:3373)
    at edu.rice.cs.drjava.model.AbstractGlobalModel._setActiveDoc(AbstractGlobalModel.java:4195)
    at edu.rice.cs.drjava.model.AbstractGlobalModel.access$000(AbstractGlobalModel.java:168)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$2.itemCase(AbstractGlobalModel.java:341)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$2.itemCase(AbstractGlobalModel.java:364)
    at edu.rice.cs.util.docnavigation.LeafNode.execute(LeafNode.java:52)
    at edu.rice.cs.drjava.model.AbstractGlobalModel$3.gainedSelection(AbstractGlobalModel.java:370)
    at edu.rice.cs.util.docnavigation.JTreeSortNavigator.valueChanged(JTreeSortNavigator.java:590)
    at javax.swing.JTree.fireValueChanged(JTree.java:2399)

     
  • Mathias Ricken

    Mathias Ricken - 2008-02-06

    Logged In: YES
    user_id=1075744
    Originator: NO

    I agree, opening a folder shouldn't cause an OutOfMemoryException. Maybe we have to examine the document cache again for leaks. YourKit might a tool for that (and since I know YourKit best, I might end up being the tool :P ).

    Do you think this bug could be related to your other OutOfMemoryException?
    [ 1887063 ] OutOfMemoryError on debug startup
    http://sourceforge.net/tracker/index.php?func=detail&aid=1887063&group_id=44253&atid=438935

     

Log in to post a comment.