class Rackup::Server

def handle_profiling(heapfile, profile_mode, filename)

def handle_profiling(heapfile, profile_mode, filename)
  if heapfile
    require "objspace"
    ObjectSpace.trace_object_allocations_start
    yield
    GC.start
    ::File.open(heapfile, "w") { |f| ObjectSpace.dump_all(output: f) }
    exit
  end
  if profile_mode
    require "stackprof"
    require "tempfile"
    make_profile_name(filename) do |filename|
      ::File.open(filename, "w") do |f|
        StackProf.run(mode: profile_mode, out: f) do
          yield
        end
        puts "Profile written to: #{filename}"
      end
    end
    exit
  end
  yield
end