Agreed, we need to do something smarter. Ah freemarker "model" classes 
are interfaces are they not... so it should be pretty easy to implement 
TemplateHashModel to back directly onto a feature, instead of copying 
everything from the feature into a SimpleHash.


Andrea Aime wrote:
> Hi,
> today I was trying out a KML generation and was greeted by the following 
> error:
> 
> java.lang.OutOfMemoryError: Java heap space
>       at java.util.Arrays.copyOf(Arrays.java:2882)
>       at 
> java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
>       at 
> java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
>       at java.lang.StringBuffer.append(StringBuffer.java:224)
>       at java.io.StringWriter.write(StringWriter.java:84)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendCoordinate(WKTWriter.java:508)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendLineStringText(WKTWriter.java:581)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendPolygonText(WKTWriter.java:603)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendMultiPolygonText(WKTWriter.java:691)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendMultiPolygonTaggedText(WKTWriter.java:437)
>       at 
> com.vividsolutions.jts.io.WKTWriter.appendGeometryTaggedText(WKTWriter.java:327)
>       at 
> com.vividsolutions.jts.io.WKTWriter.writeFormatted(WKTWriter.java:291)
>       at com.vividsolutions.jts.io.WKTWriter.write(WKTWriter.java:226)
>       at com.vividsolutions.jts.geom.Geometry.toText(Geometry.java:947)
>       at com.vividsolutions.jts.geom.Geometry.toString(Geometry.java:935)
>       at java.lang.String.valueOf(String.java:2827)
>       at 
> org.geoserver.template.FeatureWrapper.wrapValue(FeatureWrapper.java:116)
>       at org.geoserver.template.FeatureWrapper.wrap(FeatureWrapper.java:169)
>       at 
> freemarker.template.Template.createProcessingEnvironment(Template.java:351)
>       at freemarker.template.Template.process(Template.java:232)
>       at 
> org.vfny.geoserver.wms.responses.featureInfo.FeatureTemplate.execute(FeatureTemplate.java:265)
>       at 
> org.vfny.geoserver.wms.responses.featureInfo.FeatureTemplate.title(FeatureTemplate.java:150)
>       at 
> org.vfny.geoserver.wms.responses.featureInfo.FeatureTemplate.title(FeatureTemplate.java:177)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemarkName(KMLVectorTransformer.java:694)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encodePlacemark(KMLVectorTransformer.java:633)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:300)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:271)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLVectorTransformer$KMLTranslator.encode(KMLVectorTransformer.java:243)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encodeVectorLayer(KMLTransformer.java:208)
>       at 
> org.vfny.geoserver.wms.responses.map.kml.KMLTransformer$KMLTranslator.encode(KMLTransformer.java:155)
>       at 
> org.geotools.xml.transform.TransformerBase$XMLReaderSupport.parse(TransformerBase.java:702)
>       at 
> org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
> 19 mar 11:28:58 INFO [geoserver.filters] - 127.0.0.1 "GET 
> /geoserver/wms?service=WMS&request=GetMap&forma
> 
> Now, how many times you do include the Geometry WKT in the placemark 
> name? :)
> When this does not trigger an OOM, for sure it slows down a lot KML 
> generation since that WKT conversion is not needed.
> Wondering, is there any way to lazily wrap a Feature so that we incur
> in the translation cost only if a certain field is accessed?
> (think also features with a ton of fields and the like...)
> 
> Cheers
> Andrea
> 
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Geoserver-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
> 
> !DSPAM:4007,47e0ec35320931336712104!
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to