[ 
https://issues.apache.org/jira/browse/PDFBOX-5451?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Lehmkühler updated PDFBOX-5451:
---------------------------------------
    Description: 
-When creating a COSString the given byte array is cloned. As in most cases the 
array is just an intermediate object we should remove that to reduce the memory 
footprint.-
-Furthermore the {{getBytes}} returns the internal byte array so that I don't 
see any reason not to use the given byte array itself instead of cloning it-

My first idea was to remove the clone when setting the value of a COSString to 
reduce the memory footprint. After some discussion we came to the conclusion 
that it would make sense to do so if COSStrings were immutable. But to make 
COSStrings immutable some refactoring is needed and I won't do that for 3.0.0.

Saying that, I've reverted my first change and and added a clone in getBytes so 
that the underlying byte array isn't exposed at all.

  was:
When creating a COSString the given byte array is cloned. As in most cases the 
array is just an intermediate object we should remove that to reduce the memory 
footprint.
Furthermore the {{getBytes}} returns the internal byte array so that I don't 
see any reason not to use the given byte array itself instead of cloning it


> Avoid exposing underlying byte array
> ------------------------------------
>
>                 Key: PDFBOX-5451
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5451
>             Project: PDFBox
>          Issue Type: Improvement
>          Components: Parsing
>    Affects Versions: 3.0.0 PDFBox
>            Reporter: Andreas Lehmkühler
>            Assignee: Andreas Lehmkühler
>            Priority: Major
>             Fix For: 3.0.0 PDFBox
>
>
> -When creating a COSString the given byte array is cloned. As in most cases 
> the array is just an intermediate object we should remove that to reduce the 
> memory footprint.-
> -Furthermore the {{getBytes}} returns the internal byte array so that I don't 
> see any reason not to use the given byte array itself instead of cloning it-
> My first idea was to remove the clone when setting the value of a COSString 
> to reduce the memory footprint. After some discussion we came to the 
> conclusion that it would make sense to do so if COSStrings were immutable. 
> But to make COSStrings immutable some refactoring is needed and I won't do 
> that for 3.0.0.
> Saying that, I've reverted my first change and and added a clone in getBytes 
> so that the underlying byte array isn't exposed at all.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to