Michael Neumann
1/25/2005 2:49:00 PM
Torsten Senf wrote:
> Hi,
>
> I use a simple XML-RPC Server, which should print out Content from some Files via XML-RPC.
> Here is the source of the server:
>
> require "xmlrpc/server"
>
> s = XMLRPC::Server.new(port="8080")
>
> class MyFile
>
> # shows only the tail of the file
> def showlog(a)
> line_a = []
> f = File.open(a,"r")
> f.seek(-100, IO::SEEK_END)
> f.seek(-30000, IO::SEEK_CUR)
> line_a = f.readlines.reverse
> f.close
> return line_a
> end
>
> # shows the whole file
> def showconfig(a)
> f = File.open(a,"r")
> f_a = f.readlines
> f.close
> return f_a
> end
> end
>
>
> s.add_handler("file", MyFile.new)
>
> s.serve
>
> The problem is now, when I call the server, it gives the contents of the
> files (ok), but the memory usage of the process increases from call to call
> and the memory would not be get free. I have no idea why. How can I
> guarantee, that the memory usage from the server will be decreased after
> calling a methode via XML RPC?
You could insert GC.start, which invokes the garbage-collector. Is
memory consuption increasing monotonically, or does it increase and then
stay stable? If the first case applies, you (or XML-RPC) has a memory leak.
Regards,
Michael