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.

Bug 79186 - *Class View* reduce used memory
Summary: *Class View* reduce used memory
Status: CLOSED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Navigation (show other bugs)
Version: 5.x
Hardware: All All
: P2 blocker (vote)
Assignee: Vladimir Kvashin
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-27 10:58 UTC by Vladimir Kvashin
Modified: 2013-05-17 14:00 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Kvashin 2006-06-27 10:58:15 UTC
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.
Comment 1 Vladimir Kvashin 2006-06-27 11:01:01 UTC
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.  
Comment 2 Vladimir Voskresensky 2006-06-27 14:54:17 UTC
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?
Comment 3 Vladimir Kvashin 2006-06-27 15:56:14 UTC
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.
Comment 4 Vladimir Kvashin 2006-07-20 15:28:32 UTC
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