I have a very large GeoTIFF (1.2GB) I have added to GeoServer as a coverage. This one - http://ueod-globe.net/globe/TrueMarble_GeoTIFF/TrueMarble.250m.21600x21600.H4.tif.gz - http://ueod-globe.net/globe/TrueMarble_GeoTIFF/TrueMarble.250m.21600x21600.H4.tif.gz (8MB download, nicely compressed because most of it is ocean).
I tried to download the dataset using WCS (this URL: <http://<host>:8080/geoserver/wcs?request=GetCoverage&version=1.1.1&identifier=j2:TrueMarble.250m.21600x21600.H4&SERVICE=wcs&FORMAT=image/geotiff&boundingbox=-90,135,-45,180,urn:ogc:def:crs:EPSG::4326> ) - sure enough it returns the image, but I cancel before it starts downloading. GeoServer then proceeds to fill it's RAM quota (1gig!) and never frees it, with the console giving the OutofMemoryError and Process Explorer reporing Geoserver is sitting on 1.1 to 1.2Gig of RAM (but not actually doing anything - no CPU processing, no disk access, nothing).
I restart GeoServer, and try a smaller dataset (180MB geotif). I use the exact same URL changing only the identifier. This one /should/ return "no intersection in BBOX" because there's no data in the given co-ord range, but it does return data. An 80MB EML file (whatever that is) that contains something like this:
<?xml version="1.0" encoding="UTF-8"?><wcs:Coverages xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1.1 http://126.96.36.199:8080/geoserver/schemas/wcs/1.1.1/wcsCoverages.xsd - http://188.8.131.52:8080/geoserver/schemas/wcs/1.1.1/wcsCoverages.xsd"><wcs:Coverage><ows:Title>Wales_SE is a Tagged Image File Format with Geographic information</ows:Title><ows:Abstract>.\data_dir\coverages\landsat\Wales_SE.tif</ows:Abstract><ows:Identifier>j2:Wales_SE</ows:Identifier><ows:Reference xlink:href="cid:theCoverage"/></wcs:Coverage></wcs:Coverages>
As well as that, the GeoServer instance suddenly starts using 900MB of RAM which doesn't get cleared when the image has finished being transferred. It's now about 5 mins after the image was transferred and I've not made any more requests to the Geoserver for anything, yet the 900MB is still taken. Almost certainly a memory leak
Note - these are my Java starting parameters:
%RUN_JAVA% -Xms128M -Xmx1024M -XXermSize=64M -XX:MaxPermSize=256M
(the system has 4GB of RAM).