Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[jetty-dev] DefaultServlet / DirectNIOBuffer holding on to file descriptors

Hi!

When accessing a static resource (like GET
/resources/images/header.jpg), DefaultServlet (or actually
DirectNIOBuffer) opens a FileInputStream:

DirectNIOBuffer.java, around line 66:

        FileInputStream fis = new FileInputStream(file);
        FileChannel fc = fis.getChannel();
        _buf = fc.map(FileChannel.MapMode.READ_ONLY, 0, file.length());

I can't see this input stream/channel/buffer ever getting closed, and
lsof indeed lists the process as having two open descriptors for this
file, one memory mapped and one regular readonly:

java    1359 user  mem    REG                3,1     6505  441546
/JettyDir/webapp/resources/images/header.jpg
java    1359 user  257r   REG                3,1     6505  441546
/JettyDir/webapp/resources/images/header.jpg

Is this a resource leak in Jetty or have is there something I've missed here?

Eirik.


Back to the top