This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Start IDE, open class view, open LiteSQL project. Used memory is about 66Mb. When opening the same project in the absence of class view, used memory is about 43-45 Mb. The difference is too large and should be reduced. Moreover, if you open the class view *after* the project has been opened, it doesn't wast more than 1-2 Mb.
Implementation comment. Now class view nodes hold the CsmXxx objects. When parsing and reparsing headers, instances of these objects that correspond to the same language element changes. While listening model events, ClassView gets instances in notification and stores them. Later on, when files are reparsed, new instances are created. But Class View still holds old ones, which in turns holds CsmFile objects for containing files, which in turn holds all declarations that are in fact already removed from model, etc.
Implementation Comment. VV0: we can use weak references. VV1: ClassView hold CsmXxx objects after handling model event. Objects are hold, because they are in "added" set. But if they later replaced from model by new ones, why we still hold them? Why they are not removed due to new model event by analyzing "removed" set? VV2: if objects remains in class view. Do we have doubled information about the same declarations?
Weak references is better than usual ones, but we'd better not store references to non-actual objects at all. Changing CsmXxx objects with new ones when CsmChangeEvent reports change is another solution. But I think if we get rid of CsmXxx objects at all (probably except for projects and namespaces), this will be the best solution. The reason is as follows. Since our concept is that instances even for top-level objects aren't persistent, we shouldn't store them on a long-term basis.
Fixed. Changes log is as follows. Tag: cnd-nb50-dev User: vkvashin Date: 2006/07/20 07:04:10 Checking in classview/src/org/netbeans/modules/cnd/classview/model/EnumNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/EnumNode.java,v <-- EnumNode.java new revision: 1.1.2.5; previous revision: 1.1.2.4 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/MemberNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/MemberNode.java,v <-- MemberNode.java new revision: 1.1.2.5; previous revision: 1.1.2.4 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/EnumeratorNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/EnumeratorNode.java,v <-- EnumeratorNode.java new revision: 1.1.2.8; previous revision: 1.1.2.7 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/CVUtil.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/CVUtil.java,v <-- CVUtil.java new revision: 1.1.2.4; previous revision: 1.1.2.3 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/NamespaceNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/NamespaceNode.java,v <-- NamespaceNode.java new revision: 1.1.2.6; previous revision: 1.1.2.5 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/LoadingNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/LoadingNode.java,v <-- LoadingNode.java new revision: 1.1.2.3; previous revision: 1.1.2.2 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/ObjectNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/ObjectNode.java,v <-- ObjectNode.java new revision: 1.1.2.7; previous revision: 1.1.2.6 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/ClassNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/ClassNode.java,v <-- ClassNode.java new revision: 1.1.2.7; previous revision: 1.1.2.6 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/NPNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/NPNode.java,v <-- NPNode.java new revision: 1.1.2.6; previous revision: 1.1.2.5 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/GlobalVarNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/GlobalVarNode.java,v <-- GlobalVarNode.java new revision: 1.1.2.4; previous revision: 1.1.2.3 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/GlobalFuncNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/GlobalFuncNode.java,v <-- GlobalFuncNode.java new revision: 1.1.2.4; previous revision: 1.1.2.3 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/TypedefNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/TypedefNode.java,v <-- TypedefNode.java new revision: 1.1.2.5; previous revision: 1.1.2.4 done Checking in classview/src/org/netbeans/modules/cnd/classview/model/BaseNode.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/model/Attic/BaseNode.java,v <-- BaseNode.java new revision: 1.1.2.7; previous revision: 1.1.2.6 done Checking in classview/src/org/netbeans/modules/cnd/classview/ClassView.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/Attic/ClassView.java,v <-- ClassView.java new revision: 1.1.2.8; previous revision: 1.1.2.7 done Checking in classview/src/org/netbeans/modules/cnd/classview/ClassViewModel.java; /shared/data/ccvs/repository/cnd/classview/src/org/netbeans/modules/cnd/classview/Attic/ClassViewModel.java,v <-- ClassViewModel.java new revision: 1.1.2.7; previous revision: 1.1.2.6 done Checking in modelutil/src/org/netbeans/modules/cnd/modelutil/CsmNode.java; /shared/data/ccvs/repository/cnd/modelutil/src/org/netbeans/modules/cnd/modelutil/Attic/CsmNode.java,v <-- CsmNode.java new revision: 1.1.2.4; previous revision: 1.1.2.3 done