private float computeTempObj(List<JstatItem> subList, JvmModel fPhaseMax, Reducer fReducer) {
		float tempObj = 0;
		float shuffleBytesMB = (float) ((double)fReducer.getReducerCounters().getReduce_shuffle_raw_bytes() / (1024 * 1024));
		
		JstatItem lastJstat = subList.get(subList.size() - 1);
		if(lastJstat.getFGC() == 0 && lastJstat.getYGC() == 0) 
			tempObj = lastJstat.getEU() - shuffleBytesMB;
			
		else {
			float ascend = 0;
			float descend = 0;
			int size = subList.size();
			
			float[] c = new float[size];
			
			for(int i = 0; i < size; i++) {
				JstatItem item = subList.get(i);
				c[i] = item.getEU() + item.getS0U() + item.getS1U() + item.getOU();
			}
			
			ascend += c[0];
			for(int i = 1; i < c.length; i++) {
				if(c[i] > c[i-1])
					ascend += c[i] - c[i-1];  // contains InMemorySegments and accompanying temp objects 
				
				else if(c[i] < c[i-1]) {
					descend += (c[i-1] - c[i]); // revoke InMemorySegments(merged to disk) and temp objects
				}
			}
			
			if(ascend > shuffleBytesMB)
				tempObj = ascend - shuffleBytesMB;  // conservative
			else
				tempObj = descend;			// conservative
			
		}
					
		return tempObj;
	}