public synchronized boolean getSnapshot()

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;
  }