public void analyzeCurrentMemoryStatus() {
	
	System.out.println("================= Current Memory Status =================");
	
	System.out.println("## Current framework objects");
	// analyze framework objects
	if(!allocatedBuffers.isEmpty()) {
	    System.out.println("| FrameworkObj | InnerObj | bytes | Reason |");
	    System.out.println("|:------------|------------:|-------------:|:------------|");
	}
	
	for(BufferObject buffer : allocatedBuffers) {
	    displayBufferObject(buffer);
	    allocatedObjNames.add(buffer.getName());
	}
	
	System.out.println("\n## Current user objects");
	
	
	List<UserObjectsPerDump> mapObjsList = new ArrayList<UserObjectsPerDump>();
	List<UserObjectsPerDump> combineObjsList = new ArrayList<UserObjectsPerDump>();
	// analyze user objects
	
	for(UserObjectsPerDump dump : userObjsList) {
	    if(dump.getCounterName().contains("map")) 
		mapObjsList.add(dump);
	    else
		combineObjsList.add(dump);
	}
	
	if(!mapObjsList.isEmpty()) {
	    mapObjModel = new UserObjectModel(mapObjsList, "map");
	    mapObjModel.buildModel();
	    mapObjModel.display();
	}
	
	if(!combineObjsList.isEmpty()) {
	    computeRealCombineInputRecords(combineObjsList);
	    
	    combineObjModel = new UserObjectModel(combineObjsList, "combine");
	    combineObjModel.buildModel();
	    combineObjModel.display();
	}
	    
    }