2022-01-10 06:21:40 +00:00
|
|
|
# use bundle exec to run this script
|
2020-09-15 00:28:54 +00:00
|
|
|
require 'mini_racer'
|
|
|
|
|
|
|
|
MiniRacer::Platform.set_flags! :single_threaded
|
|
|
|
|
|
|
|
@ctx = MiniRacer::Context.new
|
|
|
|
@ctx.eval("var a = 1+1")
|
|
|
|
|
|
|
|
def trigger_gc
|
|
|
|
puts "a"
|
|
|
|
ctx = MiniRacer::Context.new
|
|
|
|
puts "b"
|
|
|
|
ctx.eval("var a = #{('x' * 100000).inspect}")
|
|
|
|
puts "c"
|
|
|
|
ctx.eval("a = undefined")
|
|
|
|
puts "d"
|
|
|
|
ctx.isolate.low_memory_notification
|
|
|
|
puts "f"
|
|
|
|
puts "done triggering"
|
|
|
|
end
|
|
|
|
|
|
|
|
trigger_gc
|
2022-01-10 06:21:40 +00:00
|
|
|
|
|
|
|
MiniRacer::Context.new.dispose
|
|
|
|
|
2022-07-21 05:02:32 +00:00
|
|
|
if Process.respond_to?(:fork)
|
|
|
|
Process.wait fork { puts @ctx.eval("a"); @ctx.dispose; puts Process.pid; trigger_gc; puts "done #{Process.pid}" }
|
|
|
|
end
|