private static void getNetStats(LocalStatisticsImpl stats) {
    try (FileInputStream fileInputStream = new FileInputStream("/proc/net/dev");
        InputStreamReader isr = new InputStreamReader(fileInputStream);
        BufferedReader br = new BufferedReader(isr)) {
      br.readLine(); // Discard header info
      br.readLine(); // Discard header info
      long lo_recv_packets = 0, lo_recv_bytes = 0;
      long other_recv_packets = 0, other_recv_bytes = 0;
      long other_recv_errs = 0, other_recv_drop = 0;
      long other_xmit_packets = 0, other_xmit_bytes = 0;
      long other_xmit_errs = 0, other_xmit_drop = 0, other_xmit_colls = 0;
      String line;
      while ((line = br.readLine()) != null) {
        int index = line.indexOf(":");
        boolean isloopback = (line.contains("lo:"));
        tokenizer.setString(line.substring(index + 1).trim());
        long recv_bytes = tokenizer.nextTokenAsLong();
        long recv_packets = tokenizer.nextTokenAsLong();
        long recv_errs = tokenizer.nextTokenAsLong();
        long recv_drop = tokenizer.nextTokenAsLong();
        tokenizer.skipTokens(4); // fifo, frame, compressed, multicast
        long xmit_bytes = tokenizer.nextTokenAsLong();
        long xmit_packets = tokenizer.nextTokenAsLong();
        long xmit_errs = tokenizer.nextTokenAsLong();
        long xmit_drop = tokenizer.nextTokenAsLong();
        tokenizer.skipToken(); // fifo
        long xmit_colls = tokenizer.nextTokenAsLong();

        if (isloopback) {
          lo_recv_packets = recv_packets;
          lo_recv_bytes = recv_bytes;
        } else {
          other_recv_packets += recv_packets;
          other_recv_bytes += recv_bytes;
        }
        other_recv_errs += recv_errs;
        other_recv_drop += recv_drop;

        if (!isloopback) {
          other_xmit_packets += xmit_packets;
          other_xmit_bytes += xmit_bytes;
        }
        other_xmit_errs += xmit_errs;
        other_xmit_drop += xmit_drop;
        other_xmit_colls += xmit_colls;
      }
      // fix for bug 43860
      stats.setLong(LinuxSystemStats.loopbackPacketsLONG, lo_recv_packets);
      stats.setLong(LinuxSystemStats.loopbackBytesLONG, lo_recv_bytes);
      stats.setLong(LinuxSystemStats.recvPacketsLONG, other_recv_packets);
      stats.setLong(LinuxSystemStats.recvBytesLONG, other_recv_bytes);
      stats.setLong(LinuxSystemStats.recvErrorsLONG, other_recv_errs);
      stats.setLong(LinuxSystemStats.recvDropsLONG, other_recv_drop);
      stats.setLong(LinuxSystemStats.xmitPacketsLONG, other_xmit_packets);
      stats.setLong(LinuxSystemStats.xmitBytesLONG, other_xmit_bytes);
      stats.setLong(LinuxSystemStats.xmitErrorsLONG, other_xmit_errs);
      stats.setLong(LinuxSystemStats.xmitDropsLONG, other_xmit_drop);
      stats.setLong(LinuxSystemStats.xmitCollisionsLONG, other_xmit_colls);
    } catch (NoSuchElementException | IOException ignore) {
    } finally {
      tokenizer.releaseResources();
    }
  }
Returns the available system memory (free + cached).

@param logger the logger
@return the available memory in bytes
geode-core/src/main/java/org/apache/geode/internal/statistics/platform/LinuxProcFsStatistics.java