[jboss-cvs] jboss-profiler/jvmti-lib/java-src/org/jboss/profiler/jvmti ...

Clebert Suconic csuconic at jboss.com
Wed Sep 12 18:40:47 EDT 2007


  User: csuconic
  Date: 07/09/12 18:40:47

  Modified:    jvmti-lib/java-src/org/jboss/profiler/jvmti 
                        JVMTIInterface.java
  Log:
  Improvements on report
  
  Revision  Changes    Path
  1.42      +46 -30    jboss-profiler/jvmti-lib/java-src/org/jboss/profiler/jvmti/JVMTIInterface.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: JVMTIInterface.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-profiler/jvmti-lib/java-src/org/jboss/profiler/jvmti/JVMTIInterface.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -b -r1.41 -r1.42
  --- JVMTIInterface.java	26 Jun 2007 01:52:22 -0000	1.41
  +++ JVMTIInterface.java	12 Sep 2007 22:40:47 -0000	1.42
  @@ -48,8 +48,6 @@
   import java.util.TreeSet;
   import java.util.WeakHashMap;
   
  -import org.jboss.logging.Logger;
  -
   
   
   /**
  @@ -57,8 +55,6 @@
    */
   public class JVMTIInterface implements JVMTIInterfaceMBean
   {
  -    private static final Logger log = Logger.getLogger(JVMTIInterface.class);
  -    
   	private static boolean isLoaded=true;
       static {
           try {
  @@ -66,7 +62,7 @@
           }
           catch (Throwable e) {
           	isLoaded=false;
  -            log.error("The DLL couldn't be loaded, you won't be able to use any JVMTIInterface feature",e);
  +            System.out.println("The DLL couldn't be loaded, you won't be able to use any JVMTIInterface feature");
           }
       }
   
  @@ -298,17 +294,17 @@
       		{
       			if (callToString)
       			{
  -    				returnValue = obj.toString();
  +    				returnValue = "TOSTRING(" + obj.toString() +"), class=" + obj.getClass().getName();
       			}
       			else
       			{
       				if (obj instanceof Class)
       				{
  -    					returnValue = obj.toString();
  +    					returnValue = "CLASS(" + obj.toString() + "), identifyHashCode=" + System.identityHashCode(obj);
       				}
       				else
       				{
  -    					returnValue =  obj.getClass().getName() + "@" + System.identityHashCode(obj);
  +    					returnValue =  "OBJ(" + obj.getClass().getName() + "@" + System.identityHashCode(obj) + ")";
       				}
       			}
       		}
  @@ -320,7 +316,7 @@
       	
       	if (returnValue.length() > 200)
       	{
  -    		return obj.getClass().getName() + "@" + System.identityHashCode(obj);
  +    		return "OBJ(" + obj.getClass().getName() + "@" + System.identityHashCode(obj) + ")";
       	}
       	else
       	{
  @@ -330,7 +326,7 @@
       
       /** Explore references recursevely */
       private void exploreObject(PrintWriter out, Object source,  int currentLevel, final int maxLevel,boolean useToString,  boolean weakAndSoft,
  -    		                                HashMap mapDataPoints,  
  +    		                                Map mapDataPoints,  
       		                                HashSet alreadyExplored)
       {
       	String level = null;
  @@ -365,16 +361,13 @@
       	alreadyExplored.add(index);
       	
       	
  -    	log.info("resolving references of " + callToString(source,useToString) + "...");
       	Long sourceTag = new Long(this.getTagOnObject(source));
       	ArrayList listPoints = (ArrayList)mapDataPoints.get(sourceTag);
       	if (listPoints ==null)
       	{
  -           log.info("didn't find references");
       		return;
       	}
       	
  -        log.info("References found");
       	
       	Iterator iter = listPoints.iterator();
       	
  @@ -518,7 +511,7 @@
   		   nextReference = null;
   		   break;
   	   default:
  -			   log.warn("unexpected reference " + point);
  +			   System.out.println("unexpected reference " + point);
   		}
   		return nextReference;
   	}
  @@ -527,7 +520,7 @@
        * This method can't be exposed through JMX as it would serialize a huge amount of data.
        * @return HashMap<Long objectId,ArrayList<ReferenceDataPoint> referencees>
        *  */
  -    public HashMap createIndexMatrix() throws IOException
  +    public Map createIndexMatrix() throws IOException
       {
       	final HashMap referencesMap = new HashMap();
   	    	File tmpFile = File.createTempFile("tmpRefs",".tmp");
  @@ -538,12 +531,12 @@
   						{
   							if (count==0)
   							{
  -								log.info("started receiving references");
  +								System.out.println("started receiving references");
   							}
   							count++;
   							if (count%1000==0)
   							{
  -                               log.info(count + " references received");
  +								System.out.println(count + " references received");
   							}
   							ReferenceDataPoint dataPoint = new ReferenceDataPoint(referenceHolder, referencedObject, classTag, index, method, referenceType);
   							Long indexLong = new Long(referencedObject);
  @@ -585,7 +578,7 @@
       		return "<b> you have to select at least solveReferences || solveClassLoaders || printObjects </b>";
       	}
   
  -    	HashMap referencesMap = null;
  +    	Map referencesMap = null;
       	try
       	{
   	    	referencesMap = createIndexMatrix();
  @@ -601,7 +594,38 @@
   
   		try
   		{
  -			return exploreClassReferences(className, maxLevel, solveReferencesOnClasses, solveReferencesOnClassLoaders, useToString, weakAndSoft, printObjects, referencesMap);
  +			CharArrayWriter charArray = new CharArrayWriter();
  +	    	PrintWriter out = new PrintWriter(charArray);
  +
  +	    	out.println(exploreClassReferences(className, maxLevel, solveReferencesOnClasses, solveReferencesOnClassLoaders, useToString, weakAndSoft, referencesMap));
  +	    	
  +	    	if (printObjects)
  +	    	{
  +		    	this.releaseTags();
  +		    	Class classes[] = this.getLoadedClasses();
  +		    	
  +		    	for (int countClazz = 0; countClazz<classes.length; countClazz++)
  +		    	{
  +		    		Class clazz = classes[countClazz];
  +		    		if (clazz.getName().equals(className))
  +		    		{
  +		    			Object[] objs = this.getAllObjects(clazz);
  +		    			
  +		    			if (objs.length != 0)
  +		    			{
  +		    				out.println("<br> Instances of:" + clazz.getName() + " ClassLoader=" + clazz.getClassLoader());
  +		    				for (int countOBJ=0; countOBJ<objs.length; countOBJ++)
  +		    				{
  +		    					out.println("<br>" + clazz.getName() + "[" + countOBJ + "]=" + objs[countOBJ]);
  +		    				}
  +		    			}
  +		    		}
  +		    	}
  +	    	}
  +	    	
  +	    	out.flush();
  +	    	
  +	    	return charArray.toString();
   		}
   		finally
   		{
  @@ -611,7 +635,7 @@
       }
   
       /** This is an overload to reuse the matrix index in case you already have indexed the JVM  */
  -	public String exploreClassReferences(String className, int maxLevel, boolean solveReferencesOnClasses, boolean solveReferencesOnClassLoaders, boolean useToString, boolean weakAndSoft, boolean printObjects, HashMap referencesMap) {
  +	public String exploreClassReferences(String className, int maxLevel, boolean solveReferencesOnClasses, boolean solveReferencesOnClassLoaders, boolean useToString, boolean weakAndSoft, Map referencesMap) {
   		CharArrayWriter charArray = new CharArrayWriter();
       	PrintWriter out = new PrintWriter(charArray);
   	    	
  @@ -636,15 +660,7 @@
   	    			}
   	    			out.println("<br>");
   	    			
  -	    			if (printObjects)
  -	    			{
   	    				
  -	    				Object objects[] = this.getAllObjects(loadClasses[i]);
  -	    				for (int j=0;j<objects.length;j++)
  -	    				{
  -	    					out.println("obj[" + j + "]=" + objects[j]);
  -	    				}
  -	    			}
   	    		}
   	    	}
   	    	
  @@ -670,7 +686,7 @@
   
       	Object obj[] = this.getAllObjects(className);
   
  -    	HashMap referencesMap = null;
  +    	Map referencesMap = null;
       	try
       	{
   	    	referencesMap = createIndexMatrix();
  @@ -710,7 +726,7 @@
       /**
        * Show the reference holders tree of an object. This returns a report you can visualize through MBean.
        */
  -    public String exploreObjectReferences(HashMap referencesMap, Object thatObject, int maxLevel, boolean useToString)
  +    public String exploreObjectReferences(Map referencesMap, Object thatObject, int maxLevel, boolean useToString)
       {
       	CharArrayWriter charArray = new CharArrayWriter();
       	PrintWriter out = new PrintWriter(charArray);
  
  
  



More information about the jboss-cvs-commits mailing list