src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java

Print this page




  30  * at JavaSoft/Sun.
  31  */
  32 
  33 package com.sun.tools.hat.internal.server;
  34 
  35 import com.sun.tools.hat.internal.model.*;
  36 import java.util.*;
  37 
  38 /**
  39  * References by type summary
  40  *
  41  */
  42 public class RefsByTypeQuery extends QueryHandler {
  43     public void run() {
  44         JavaClass clazz = snapshot.findClass(query);
  45         if (clazz == null) {
  46             error("class not found: " + query);
  47         } else {
  48             Map<JavaClass, Long> referrersStat = new HashMap<JavaClass, Long>();
  49             final Map<JavaClass, Long> refereesStat = new HashMap<JavaClass, Long>();
  50             Enumeration instances = clazz.getInstances(false);
  51             while (instances.hasMoreElements()) {
  52                 JavaHeapObject instance = (JavaHeapObject) instances.nextElement();
  53                 if (instance.getId() == -1) {
  54                     continue;
  55                 }
  56                 Enumeration e = instance.getReferers();
  57                 while (e.hasMoreElements()) {
  58                     JavaHeapObject ref = (JavaHeapObject) e.nextElement();
  59                     JavaClass cl = ref.getClazz();
  60                     if (cl == null) {
  61                          System.out.println("null class for " + ref);
  62                          continue;
  63                     }
  64                     Long count = referrersStat.get(cl);
  65                     if (count == null) {
  66                         count = 1L;
  67                     } else {
  68                         count = count + 1L;
  69                     }
  70                     referrersStat.put(cl, count);
  71                 }
  72                 instance.visitReferencedObjects(
  73                     new AbstractJavaHeapObjectVisitor() {
  74                         public void visit(JavaHeapObject obj) {
  75                             JavaClass cl = obj.getClazz();
  76                             Long count = refereesStat.get(cl);
  77                             if (count == null) {
  78                                 count = 1L;




  30  * at JavaSoft/Sun.
  31  */
  32 
  33 package com.sun.tools.hat.internal.server;
  34 
  35 import com.sun.tools.hat.internal.model.*;
  36 import java.util.*;
  37 
  38 /**
  39  * References by type summary
  40  *
  41  */
  42 public class RefsByTypeQuery extends QueryHandler {
  43     public void run() {
  44         JavaClass clazz = snapshot.findClass(query);
  45         if (clazz == null) {
  46             error("class not found: " + query);
  47         } else {
  48             Map<JavaClass, Long> referrersStat = new HashMap<JavaClass, Long>();
  49             final Map<JavaClass, Long> refereesStat = new HashMap<JavaClass, Long>();
  50             Enumeration<JavaHeapObject> instances = clazz.getInstances(false);
  51             while (instances.hasMoreElements()) {
  52                 JavaHeapObject instance = instances.nextElement();
  53                 if (instance.getId() == -1) {
  54                     continue;
  55                 }
  56                 Enumeration<JavaThing> e = instance.getReferers();
  57                 while (e.hasMoreElements()) {
  58                     JavaHeapObject ref = (JavaHeapObject)e.nextElement();
  59                     JavaClass cl = ref.getClazz();
  60                     if (cl == null) {
  61                          System.out.println("null class for " + ref);
  62                          continue;
  63                     }
  64                     Long count = referrersStat.get(cl);
  65                     if (count == null) {
  66                         count = 1L;
  67                     } else {
  68                         count = count + 1L;
  69                     }
  70                     referrersStat.put(cl, count);
  71                 }
  72                 instance.visitReferencedObjects(
  73                     new AbstractJavaHeapObjectVisitor() {
  74                         public void visit(JavaHeapObject obj) {
  75                             JavaClass cl = obj.getClazz();
  76                             Long count = refereesStat.get(cl);
  77                             if (count == null) {
  78                                 count = 1L;