Skip to content

Instantly share code, notes, and snippets.

@vigo
Created January 27, 2012 18:00

Revisions

  1. vigo created this gist Jan 27, 2012.
    19 changes: 19 additions & 0 deletions free-memory.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,19 @@
    #!/usr/bin/env ruby
    # encoding: utf-8

    # By Uğur Özyılmazel, @vigobronx | @ugurozyilmazel
    # http://vigodome.com | http://ugur.ozyilmazel.com | http://github.com/vigo

    def get_paged_memory_usage(match_string, paging=4096)
    mvar = 3
    if match_string.split(/[^\w]/).length > 1
    mvar = 4
    end
    paged_val = `vm_stat | grep "Pages #{match_string}:" | awk '{ print $#{mvar}}'`.to_i
    gigabyte_val = (paged_val * paging) / 1024 / 1024 / 1000.0
    end

    installed_memory = `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 1000.0
    total_consumed = 0
    ['wired down', 'active', 'inactive'].each { |key| total_consumed += get_paged_memory_usage(key) }
    printf("%.2fG", (installed_memory-total_consumed)) # returns in gigabytes