normal 436eef270d net/http: clear compressed chunk after decompression
We no longer need the compressed data once the inflate block is
called; so clear it ASAP to reduce memory overhead.  This is a
small chunk, so it only saves a few hundred kilobytes with the
script below.

before:        RssAnon:     5976 kB
 after:        RssAnon:     5564 kB
------
require 'net/http'
require 'zlib'
response_gz = ARGV.shift or abort "#$0 TEMPORARY_FILE"

 # pre-create response since compressing is slower than decompressing
unless File.readable?(response_gz)
  nr = 16384 * 2
  buf = ((0..255).map(&:chr).join * 128)
  File.open(response_gz, 'wb') do |fp|
    gzip = Zlib::GzipWriter.new(fp)
    nr.times { gzip.write(buf) }
    gzip.close
  end
  buf.clear
end
response_gz = File.open(response_gz)

s = TCPServer.new('127.0.0.1', 0)
pid = fork do
  c = s.accept
  c.readpartial(16384).clear
  c.write("HTTP/1.1 200 OK\r\n" \
          "Content-Length: #{response_gz.stat.size}\r\n" \
          "Content-Encoding: gzip\r\n" \
          "Accept-Ranges: bytes\r\n" \
          "\r\n")
  IO.copy_stream(response_gz, c)
  c.close
end

addr = s.addr
Net::HTTP.start(addr[3], addr[1]) do |http|
  http.request_get(-'/') do |res|
    res.read_body(&:clear)
  end
end
puts File.readlines(-'/proc/self/status').grep(/RssAnon/)[0]
Process.waitpid2(pid)
------
* lib/net/http/response.rb (inflate_adapter): clear compressed_chunk

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61684 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-08 10:23:27 +00:00
..
2017-12-30 12:10:43 +00:00
2017-10-22 11:27:06 +00:00
2017-12-31 00:06:34 +00:00
2017-10-08 07:00:01 +00:00
2017-12-25 05:54:27 +00:00
2017-10-08 07:00:01 +00:00
2017-12-14 06:30:22 +00:00
2017-12-24 08:38:43 +00:00
2017-09-12 08:38:06 +00:00
2017-12-22 08:00:10 +00:00
2017-12-22 08:00:10 +00:00
2017-09-02 02:05:34 +00:00
2017-10-21 13:34:19 +00:00
2017-12-25 07:55:25 +00:00
2017-10-08 07:00:01 +00:00
2017-10-08 07:00:01 +00:00
2017-12-23 23:33:09 +00:00
2017-12-20 04:25:01 +00:00
2017-12-22 23:08:05 +00:00
2018-01-07 17:49:46 +00:00
2017-11-22 21:13:51 +00:00
2017-10-08 07:00:01 +00:00
2017-10-08 07:00:01 +00:00