private static void getNetStatStats(LocalStatisticsImpl stats,
      String netstatStatsFilePath) {
    SpaceTokenizer headerTokenizer = new SpaceTokenizer();
    try (FileInputStream netstatStatsFileInputStream = new FileInputStream(netstatStatsFilePath);
        InputStreamReader isr = new InputStreamReader(netstatStatsFileInputStream);
        BufferedReader br = new BufferedReader(isr)) {

      String line = br.readLine(); // header;
      headerTokenizer.setString(line);

      do {
        line = br.readLine();
      } while (line != null && !line.startsWith("TcpExt:"));

      tokenizer.setString(line);

      Set<String> tokenNames = new HashSet<>();

      tokenNames.add(TCP_SYNCOOKIES_SENT_NAME);
      tokenNames.add(TCP_SYNCOOKIES_RECV_NAME);
      tokenNames.add(TCP_LISTEN_OVERFLOWS_NAME);
      tokenNames.add(TCP_LISTEN_DROPS_NAME);

      // Find the token position for each stat we're interested in from the header line and read the
      // corresponding token from the stats line
      while (headerTokenizer.hasMoreTokens() && !tokenNames.isEmpty()) {
        String currentToken = headerTokenizer.peekToken();
        if (tokenNames.contains(currentToken)) {
          long statValue = SpaceTokenizer.parseAsLong(tokenizer.peekToken());
          switch (currentToken) {
            case TCP_SYNCOOKIES_SENT_NAME:
              stats.setLong(LinuxSystemStats.tcpExtSynCookiesSentLONG, statValue);
              break;
            case TCP_SYNCOOKIES_RECV_NAME:
              stats.setLong(LinuxSystemStats.tcpExtSynCookiesRecvLONG, statValue);
              break;
            case TCP_LISTEN_OVERFLOWS_NAME:
              stats.setLong(LinuxSystemStats.tcpExtListenOverflowsLONG, statValue);
              break;
            case TCP_LISTEN_DROPS_NAME:
              stats.setLong(LinuxSystemStats.tcpExtListenDropsLONG, statValue);
              break;
          }
          tokenNames.remove(currentToken);
        }
        headerTokenizer.skipToken();
        tokenizer.skipToken();
      }

      if (!soMaxConnProcessed) {
        try (FileInputStream fileInputStream2 = new FileInputStream("/proc/sys/net/core/somaxconn");
            InputStreamReader soMaxConnIsr = new InputStreamReader(fileInputStream2);
            BufferedReader br2 = new BufferedReader(soMaxConnIsr)) {
          line = br2.readLine();
          tokenizer.setString(line);
          soMaxConn = tokenizer.nextTokenAsInt();
          soMaxConnProcessed = true;
        }
      }

      stats.setLong(LinuxSystemStats.tcpSOMaxConnLONG, soMaxConn);

    } catch (NoSuchElementException | IOException ignore) {
    } finally {
      tokenizer.releaseResources();
      headerTokenizer.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