update swig on windows
This commit is contained in:
70
winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/swig_gc.rb
Normal file
70
winx64/bin/swigwin-4.0.0/Examples/test-suite/ruby/swig_gc.rb
Normal file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env ruby
|
||||
#
|
||||
#
|
||||
# VERY nice function from Robert Klemme to check memory leaks
|
||||
# and check on what GC has collected since last call.
|
||||
#
|
||||
# Usage can be:
|
||||
#
|
||||
# require 'swig_gc'
|
||||
#
|
||||
# GC.stats
|
||||
# # do some stuff..
|
||||
# GC.start # collect and report stats
|
||||
# # do some more...
|
||||
# GC.stats # just report stats
|
||||
#
|
||||
# or:
|
||||
#
|
||||
# require 'swig_gc'
|
||||
#
|
||||
# GC.track_class = String # track just String classes
|
||||
# GC.stats
|
||||
# # do some stuff..
|
||||
# GC.start # collect and report stats
|
||||
# # do some more...
|
||||
# GC.stats # just report stats
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
module GC
|
||||
|
||||
class << self
|
||||
|
||||
attr :last_stat
|
||||
attr_accessor :track_class
|
||||
|
||||
alias :_start :start
|
||||
|
||||
def start
|
||||
_start
|
||||
stats if $VERBOSE
|
||||
end
|
||||
|
||||
def stats
|
||||
stats = Hash.new(0)
|
||||
ObjectSpace.each_object {|o| stats[o.class] += 1}
|
||||
|
||||
if track_class
|
||||
v = stats[track_class]
|
||||
printf "\t%-30s %10d", track_class.to_s, v
|
||||
if last_stat
|
||||
printf " | delta %10d", (v - last_stat[track_class])
|
||||
end
|
||||
puts
|
||||
else
|
||||
stats.sort {|(k1,v1),(k2,v2)| v2 <=> v1}.each do |k,v|
|
||||
printf "\t%-30s %10d", k, v
|
||||
printf " | delta %10d", (v - last_stat[k]) if last_stat
|
||||
puts
|
||||
end
|
||||
end
|
||||
|
||||
last_stat = stats
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user