blob: 5892db109958dc167318e842cf8d66d767dc928d [file] [log] [blame]
<html><head><title>Resource Data Structures</title>
<LINK REL=STYLESHEET HREF=../book.css CHARSET=ISO-8859-1 TYPE=text/css>
<meta NAME="keywords" content="">
<meta NAME="since" content="">
</head><body><h2>Resource Data Structures</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2004/06/01 13:53:59 $</p>
This section contains results on memory footprint of CVS in the Core resource
plugin data structures. More specifically, CVS uses the session and persistant property
caches along with the synchronizer.
<h3>CVS Workspace Sync info caches</h3>
Checking of the cahce usage requires the use of the Core spy tools. To
obtain the memory footprint, perform the following steps.
<ol>
<li>Install the Core Spy Tools
<li>Launch Eclipse
<li>Checkout several projects
<li>Open the Element Tree Spy to get the memory footprint. At the
time of writting, CVS is the main user of these structures. In future
test, ensure that others are not contributing to the tally.
<li>Disconnect all the projects
<li>The Element Tree Spy memory footprint should be reduced accordingly
</ol>
The following snapshot of the resource element tree was taken after checking out all of the projects
(294 as of 2004/05/31) in dev.eclipse.org.
<pre>
Total resource count: 89,466
Team private: 10,186
Phantom: 4,055
Markers: 0
SyncInfo: 10,432
Number of layers: 15
Number of nodes: 89,514
Number of non-identical strings: 48,456
Total memory used by nodes: 23,141,343
Nodes and ResourceInfo: 8,586,108
Strings: 3,584,724
Markers: 0
Sync info: 1,447,861
Session properties: 9,522,650
class [B: 2,618,076
class [Ljava.lang.Object;: 2,564,448
class org.eclipse.core.internal.utils.ObjectMap: 1,700,240
class [C: 1,454,994
class java.lang.Long: 610,800
class java.lang.String: 286,580
class org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo: 285,292
class java.util.ArrayList: 768
class org.eclipse.team.internal.ccvs.core.util.StringMatcher: 660
class org.eclipse.team.internal.ccvs.core.util.FileNameMatcher: 320
class [Ljava.lang.String;: 300
class org.eclipse.core.runtime.QualifiedName: 160
class java.lang.Object: 12
The top 20 equal but non-identical strings are:
A.java->2,002
in->1,219
plugin.xml->913
out->794
A_out.java->489
A_in.java->487
eclipse->431
org->421
Test.java->412
B.java->345
build.properties->297
I.java->269
internal->256
about.html->253
plugin.properties->243
.cvsignore->227
.classpath->209
ui->185
src->184
package.html->165
</pre>
<h3>CVS Merge memory usage</h3>
Merging in CVS makes use of the Core synchronizer. Perform the following steps
with the Core Spy Tool installed to
ensure proper memory management.
<ol>
<li>Checkout one or more projects
<li>Open the Element Tree Spy to get the memory footprint.
<li>Perform a merge
<li>Open the Element Tree Spy to get the memory footprint. The only increase
should be in the synchronizer.
<li>Remove the merge from the sync view
<li>The Element Tree Spy memory footprint should be reduced accordingly
</ol>
</body></html>