Reduce tile memory
Consider implementing certain propcessing steps and algorithms in reusable, plain Java classes rather than inventing a new Operator for this purpose.
Background: Each band that is computed by an Operator requires memory for its tiles. A tile's memory equals sizeof(tile_datatype) x tile_width x tile_height. With other words, Operators are expensive in terms of memory.
Write out "expensive" intermediate products
Processing chains comprising computationally expensive processing steps may be split up into two programmatically independent parts. One part of the chain will compute the expensive step and write out its data product. The successor reads in the intermediate data products and computes the final output.
Background: In the current GPF tile cache implementation, expensive tiles don't enjoy any preference above inexpensive ones. When the tile cache is full, expensive tiles may be removed and as a result, recomputation may occur.
Try different configurations
| System property | Meaning |
|---|---|
| beam.gpf.disableTileCache | Disables any caching of tiles. Very low memory consumption, but may cause severe processing overhead. Default value is false |
| beam.gpf.useFileTileCache | Uses a tile cache that swaps tiles from memory into files. Very low memory consumption, but may cause severe I/O overhead due to disk usage. Default value is false |
| beam.gpf.tileComputationObserver | The name of a class that implements the GPF TileComputationObserver interface. Very useful for monitoring the computation of the image tiles of an operator's target bands. |
| beam.reader.tileWidth and beam.reader.tileHeight | The initial tile width and height used by BEAM data product readers. The special value * means full scene raster (swath) width or full scene raster height. |