File: vtkReferenceInformation.java

package info (click to toggle)
vtk7 7.1.1%2Bdfsg2-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 127,396 kB
  • sloc: cpp: 1,539,584; ansic: 124,382; python: 78,038; tcl: 47,013; xml: 8,142; yacc: 5,040; java: 4,439; perl: 3,132; lex: 1,926; sh: 1,500; makefile: 126; objc: 83
file content (118 lines) | stat: -rw-r--r-- 3,930 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package vtk;

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * Information object return by the Garbage collector. This allow the user to
 * monitor what kind of vtkObject and how many have been removed and kept during
 * the Garbage collection call.
 *
 * @author sebastien jourdain - sebastien.jourdain@kitware.com
 */
public class vtkReferenceInformation {
  private int numberOfObjectsToFree;
  private int numberOfObjectsStillReferenced;
  private HashMap<String, AtomicInteger> classesKept;
  private HashMap<String, AtomicInteger> classesRemoved;
  private boolean keepTrackOfClassNames;

  public vtkReferenceInformation(int nbToFree, int nbToKeep, int totalSize) {
    this.numberOfObjectsToFree = nbToFree;
    this.numberOfObjectsStillReferenced = nbToKeep;
    this.keepTrackOfClassNames = false;
  }

  public vtkReferenceInformation(boolean keepTrackOfClassNames) {
    this.numberOfObjectsToFree = 0;
    this.numberOfObjectsStillReferenced = 0;
    this.keepTrackOfClassNames = keepTrackOfClassNames;
  }

  public int getTotalNumberOfObjects() {
    return numberOfObjectsStillReferenced + numberOfObjectsToFree;
  }

  public int getNumberOfObjectsToFree() {
    return numberOfObjectsToFree;
  }

  public int getTotalNumberOfObjectsStillReferenced() {
    return numberOfObjectsStillReferenced;
  }

  public void setNumberOfObjectsStillReferenced(int numberOfObjectsStillReferenced) {
    this.numberOfObjectsStillReferenced = numberOfObjectsStillReferenced;
  }

  public void setNumberOfObjectsToFree(int numberOfObjectsToFree) {
    this.numberOfObjectsToFree = numberOfObjectsToFree;
  }

  public void addFreeObject(String className) {
    this.numberOfObjectsToFree++;
    if (keepTrackOfClassNames) {
      if (classesRemoved == null && className != null) {
        classesRemoved = new HashMap<String, AtomicInteger>();
      }
      AtomicInteger counter = classesRemoved.get(className);
      if (counter == null) {
        classesRemoved.put(className, new AtomicInteger(1));
      } else {
        counter.incrementAndGet();
      }
    }
  }

  public void addKeptObject(String className) {
    this.numberOfObjectsStillReferenced++;
    if (keepTrackOfClassNames && className != null) {
      if (classesKept == null) {
        classesKept = new HashMap<String, AtomicInteger>();
      }
      AtomicInteger counter = classesKept.get(className);
      if (counter == null) {
        classesKept.put(className, new AtomicInteger(1));
      } else {
        counter.incrementAndGet();
      }
    }
  }

  public String listKeptReferenceToString() {
    if (classesKept == null) {
      return "";
    }
    final StringBuilder builder = new StringBuilder(500);
    builder.append("List of classes kept in Java layer:\n");
    for (Entry<String, AtomicInteger> entry : classesKept.entrySet()) {
      builder.append(" - ").append(entry.getKey()).append(": ").append(entry.getValue().toString()).append("\n");
    }
    return builder.toString();
  }

  public String listRemovedReferenceToString() {
    if (classesRemoved == null) {
      return "";
    }
    final StringBuilder builder = new StringBuilder(500);
    builder.append("List of classes removed in Java layer:\n");
    for (Entry<String, AtomicInteger> entry : classesRemoved.entrySet()) {
      builder.append(" - ").append(entry.getKey()).append(": ").append(entry.getValue().toString()).append("\n");
    }
    return builder.toString();
  }

  public String toString() {
    final StringBuilder builder = new StringBuilder(50);
    builder.append("VTK Gabage Collection: free(");
    builder.append(this.numberOfObjectsToFree);
    builder.append(") - keep(");
    builder.append(this.numberOfObjectsStillReferenced);
    builder.append(") - total(");
    builder.append(this.getTotalNumberOfObjects());
    builder.append(")");
    return builder.toString();
  }
}