private void analyzeCurrentMemoryStatus() {
	System.out.println("================= Current Memory Status =================");
	
	System.out.println("## Current framework objects (TODO: add configurations)");
	    
	System.out.println("| Location \t | FrameworkObj \t| Inner object \t| retainedHeap \t| Reason (from mapper) \t|");
	System.out.println("| :----------- | :----------- | :----------- | -----------: | :----------- |");
		
	for(SegmentObj sObj : segsInCopy) 
	    System.out.println(sObj);
	for(SegmentObj sObj : segsInList)
	    System.out.println(sObj);
	for(SegmentObj sObj : segsInMerge)
	    System.out.println(sObj);
	for(SegmentObj sObj : segsInBuffer)
	    System.out.println(sObj);
	
	
	
	System.out.println("\n## Current user objects");
	
	
	List<UserObjectsPerDump> combineObjsList = new ArrayList<UserObjectsPerDump>();
	List<UserObjectsPerDump> reduceObjsList = new ArrayList<UserObjectsPerDump>();
	// analyze user objects
	
	for(UserObjectsPerDump dump : userObjsPerDumpList) {
	    if(dump.getCounterName().contains("combine")) 
		combineObjsList.add(dump);
	    else
		reduceObjsList.add(dump);
	}
	
	if(!combineObjsList.isEmpty()) {
	    computeRealCombineInputRecords(combineObjsList);
	    combineObjModel = new UserObjectModel(combineObjsList, "combine");
	    combineObjModel.buildModel();
	    combineObjModel.display();
	}
	
	if(!reduceObjsList.isEmpty()) {
	    reduceObjModel = new UserObjectModel(reduceObjsList, "reduce");
	    reduceObjModel.buildModel();
	    reduceObjModel.display();
	}
	
    }