in metrics/src/main/java/com/facebook/battery/metrics/memory/MemoryMetricsCollector.java [38:74]
public synchronized boolean getSnapshot(MemoryMetrics snapshot) {
checkNotNull(snapshot, "Null value passed to getSnapshot!");
if (!mIsEnabled) {
return false;
}
/* this helps to track the latest snapshot, diff/sum always picks latest as truth */
snapshot.sequenceNumber = mCounter.incrementAndGet();
snapshot.javaHeapMaxSizeKb = getRuntimeMaxMemory() / KB;
snapshot.javaHeapAllocatedKb = (getRuntimeTotalMemory() - getRuntimeFreeMemory()) / KB;
snapshot.nativeHeapSizeKb = Debug.getNativeHeapSize() / KB;
snapshot.nativeHeapAllocatedKb = Debug.getNativeHeapAllocatedSize() / KB;
snapshot.vmSizeKb = -1;
snapshot.vmRssKb = -1;
try {
ProcFileReader reader = mProcFileReader.get();
if (reader == null) {
reader = new ProcFileReader(getPath());
mProcFileReader.set(reader);
}
reader.reset();
if (reader.isValid()) {
snapshot.vmSizeKb = readField(reader);
snapshot.vmRssKb = readField(reader);
}
} catch (ProcFileReader.ParseException pe) {
SystemMetricsLogger.wtf(TAG, "Unable to parse memory (statm) field", pe);
}
return true;
}