diff --git a/lib/stats_socket.rb b/lib/stats_socket.rb index 4fe28763ed..33dde98c3b 100644 --- a/lib/stats_socket.rb +++ b/lib/stats_socket.rb @@ -14,6 +14,12 @@ class StatsSocket < SocketServer when "gc_stat" GC.stat.to_json when "v8_stat" + stats = {} + ObjectSpace.each_object(MiniRacer::Context) do |context| + context.heap_stats.each do |k,v| + stats[k] = (stats[k] || 0) + v + end + end PrettyText.v8.heap_stats.to_json else "[\"UNKNOWN COMMAND\"]" diff --git a/spec/components/stats_socket_spec.rb b/spec/components/stats_socket_spec.rb index cac144439e..773943bda6 100644 --- a/spec/components/stats_socket_spec.rb +++ b/spec/components/stats_socket_spec.rb @@ -40,6 +40,18 @@ describe StatsSocket do parsed = JSON.parse(line) expect(parsed.keys.sort).to eq(GC.stat.keys.map(&:to_s).sort) + + # make sure we have libv8 going + PrettyText.cook("x") + + socket = UNIXSocket.new(socket_path) + socket.send "v8_stat\n", 0 + line = socket.readline + socket.close + + parsed = JSON.parse(line) + + expect(parsed['total_physical_size']).to be>(0) end end