RE: garbage collection on reset

2002-05-15 Thread Arved Sandstrom

Hi, Torsten

All points are noted.

I am not sure I understand what you want to see in the case of modified
images. In the general case, as soon as you change the dimension of an
image, you might potentially have to recalculate _all_ layout. The rendering
cannot independently start using a new image size.

I think I am missing something. Can you describe this scenario in more
detail? It sounds like a good use case.

Regards,
Arved Sandstrom

 -Original Message-
 From: Torsten Erler [mailto:[EMAIL PROTECTED]]
 Sent: May 15, 2002 6:23 AM
 To: Fop-Dev (E-mail)
 Subject: garbage collection on reset

 Can I (and if yes, how can I) configure the MEM_PROFILE_WITH_GC
 variable on
 StreamRenderer to run garbage collector every start and finish to save
 memory on batch printing?

 Additional, please take a look on FopImageFactory. This class holds strong
 references to every loaded image.
 No reload and recalculate the dimension of the image (which has modified
 since the last loading) is possible at any time. This is the cause why
 modified images are scaled to the size of the first loaded image on
 awt/print rendering.
 I've overriden the class to disable the caching complete (Batch printing
 uses 500++ MB!!! memory usage after loading 20 to 30 images and it crashes
 due to OutOfMemoryError).
 I don't know whether this is fixed in your current project status, if yes
 ignore this.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




RE: garbage collection on reset

2002-05-15 Thread Torsten Erler

Hi

The workflow is following:

- I create many images like file://c:/a/1/temp.gif, file://c:/a/2/temp.gif
and file://c:/a/3/temp.gif
- I add the path's to my xml structured document
- I transform this document and an accordingly xsl to and tmp.fo file
- this fo-file will be rendered for print-preview via an AWTRenderer
Subclass
- I call reset on Driver, my renderer and set new inputsource etc.

On batch printing this workflow repeats x-times and for every rendering
process the image-files will be created in the same way. That means,
independant on how many gifs I've to produce for the current preview, all
files are located in folder a and all files are named temp.gif. Only the
directory which holds the file is (incremetal) different, but starts for
each preview with 1. After the preview is done the directory file://c:/a
and all child files will be removed from the computer.

The first Preview works correct, but if I try to go the same way more than
one times, all following AWT-rendered Images are scaled to the size
calculated to the first loading of file://c:/a/1/temp.gif , but the size
and contents of the file has changed completely.

The FopImageFactory maps the String representation of the image URL to the
calculated FOPImage. On request it returns the wrong FOPImage, because of no
check for last modified date ore something is done. That means the ImageArea
which is constructed on rendering process has the wrong dimensions.
AWTRenderer's renderImageArea(ImageArea) method loads the correct (actual)
image from the URL and the direct drawing from Graphics2D will scale the
image into the shape-dimensions of the obsolete FOPImage.
The results are funny if the first picture has a dimesion of 100x800 points
and the second one (with exactly the same url) has 600x200 points.

Hope that helps

cu Torsten

 -Original Message-
 From: Arved Sandstrom [mailto:[EMAIL PROTECTED]]
 Sent: Mittwoch, 15. Mai 2002 12:29
 To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
 Subject: RE: garbage collection on reset


 Hi, Torsten

 All points are noted.

 I am not sure I understand what you want to see in the case
 of modified
 images. In the general case, as soon as you change the dimension of an
 image, you might potentially have to recalculate _all_
 layout. The rendering
 cannot independently start using a new image size.

 I think I am missing something. Can you describe this scenario in more
 detail? It sounds like a good use case.

 Regards,
 Arved Sandstrom

  -Original Message-
  From: Torsten Erler [mailto:[EMAIL PROTECTED]]
  Sent: May 15, 2002 6:23 AM
  To: Fop-Dev (E-mail)
  Subject: garbage collection on reset
 
  Can I (and if yes, how can I) configure the MEM_PROFILE_WITH_GC
  variable on
  StreamRenderer to run garbage collector every start and
 finish to save
  memory on batch printing?
 
  Additional, please take a look on FopImageFactory. This
 class holds strong
  references to every loaded image.
  No reload and recalculate the dimension of the image (which
 has modified
  since the last loading) is possible at any time. This is
 the cause why
  modified images are scaled to the size of the first loaded image on
  awt/print rendering.
  I've overriden the class to disable the caching complete
 (Batch printing
  uses 500++ MB!!! memory usage after loading 20 to 30 images
 and it crashes
  due to OutOfMemoryError).
  I don't know whether this is fixed in your current project
 status, if yes
  ignore this.


 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, email: [EMAIL PROTECTED]



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]




RE: garbage collection on reset

2002-05-15 Thread Keiron Liddle

Hi,

It sounds like you need the implementation of caching that is in the cvs
development.
It will be possible to specify different caching methods and to cache
with a context (eg. per document).
It also releases images (to a weak hashmap) after the renderer is
finished with them.



On Wed, 2002-05-15 at 13:56, Torsten Erler wrote:
 Hi
 
 The workflow is following:
 
 - I create many images like file://c:/a/1/temp.gif, file://c:/a/2/temp.gif
 and file://c:/a/3/temp.gif
 - I add the path's to my xml structured document
 - I transform this document and an accordingly xsl to and tmp.fo file
 - this fo-file will be rendered for print-preview via an AWTRenderer
 Subclass
 - I call reset on Driver, my renderer and set new inputsource etc.
 
 On batch printing this workflow repeats x-times and for every rendering
 process the image-files will be created in the same way. That means,
 independant on how many gifs I've to produce for the current preview, all
 files are located in folder a and all files are named temp.gif. Only the
 directory which holds the file is (incremetal) different, but starts for
 each preview with 1. After the preview is done the directory file://c:/a
 and all child files will be removed from the computer.
 
 The first Preview works correct, but if I try to go the same way more than
 one times, all following AWT-rendered Images are scaled to the size
 calculated to the first loading of file://c:/a/1/temp.gif , but the size
 and contents of the file has changed completely.
 
 The FopImageFactory maps the String representation of the image URL to the
 calculated FOPImage. On request it returns the wrong FOPImage, because of no
 check for last modified date ore something is done. That means the ImageArea
 which is constructed on rendering process has the wrong dimensions.
 AWTRenderer's renderImageArea(ImageArea) method loads the correct (actual)
 image from the URL and the direct drawing from Graphics2D will scale the
 image into the shape-dimensions of the obsolete FOPImage.
 The results are funny if the first picture has a dimesion of 100x800 points
 and the second one (with exactly the same url) has 600x200 points.
 
 Hope that helps
 
 cu Torsten



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]