Sha256: 9eae31bb23db9778300717d828edccee33714d3e042efbcd6faf1a7e91eab623

Contents?: true

Size: 1.42 KB

Versions: 18

Compression:

Stored size: 1.42 KB

Contents

# -*- encoding : utf-8 -*-
##
#
  require 'rubygems'
  #gem 'activesupport', '>= 3.0.7'
  #require 'active_support'
  #require 'active_support/dependencies'

  require 'rails/all'
  require 'dao'

##
#
  gc =
    lambda do
      10.times{ GC.start }
    end

  leak =
    lambda do
      Api =
        Dao.api do
          1000.times do |i|
            call("/foobar-#{ i }") do
            end
          end
        end

      api = Api.new

      result = api.call('/foobar-1')
      result.route || abort(result.inspect)

      ActiveSupport::Dependencies.unloadable(Api)
      ActiveSupport::Dependencies.remove_unloadable_constants!
      gc.call()
    end

##
#
  n = 10

paths = 0
ObjectSpace.each_object(Dao::Path){ paths += 1}
p 'paths' => paths

  leak.call()
  before = Process.size

paths = 0
ObjectSpace.each_object(Dao::Path){ paths += 1}
p 'paths' => paths

  leak.call()
  after = Process.size

paths = 0
ObjectSpace.each_object(Dao::Path){ paths += 1}
p 'paths' => paths

  delta = [after.first - before.first, after.last - before.last]

  p :before => before 
  p :after => after 
  p :delta => delta


##
#
  BEGIN {

    module Process
      def self.size pid = Process.pid 
        stdout = `ps wwwux -p #{ pid }`.split(%r/\n/)
        vsize, rsize = stdout.last.split(%r/\s+/)[4,2].map{|i| i.to_i}
      end

      def self.vsize
        size.first.to_i
      end

      def self.rsize
        size.last.to_i
      end
    end

  }

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
dao-8.0.1 test/leak.rb
dao-8.0.0 test/leak.rb
dao-7.0.0 test/leak.rb
dao-5.6.1 test/leak.rb
dao-5.5.2 test/leak.rb
dao-5.5.1 test/leak.rb
dao-5.5.0 test/leak.rb
dao-5.4.0 test/leak.rb
dao-5.3.3 test/leak.rb
dao-5.3.2 test/leak.rb
dao-5.3.0 test/leak.rb
dao-5.2.1 test/leak.rb
dao-5.1.2 test/leak.rb
dao-5.1.1 test/leak.rb
dao-5.0.0 test/leak.rb
dao-4.6.4 test/leak.rb
dao-4.4.4 test/leak.rb
dao-4.4.2 test/leak.rb