This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-vfs.git
The following commit(s) were added to refs/heads/master by this push: new 9c4302e FileContentThreadData: lazy ArrayList initialization to save memory (#155) 9c4302e is described below commit 9c4302e4559acb1e2a627f57f49105c54fe09895 Author: Max Kellermann <max.kellerm...@gmail.com> AuthorDate: Mon Jan 18 16:48:29 2021 +0100 FileContentThreadData: lazy ArrayList initialization to save memory (#155) * FileContentThreadData: refactor get{Instr,Rastrs}Size() to boolean methods The only caller is only interested in checking whether there is at least one; he's not interested in the actual number. * FileContentThreadData: use the new has...() methods in hasStreams() Reduce code duplication. * FileContentThreadData: lazy ArrayList initialization to save memory Don't create ArrayList instances that are never used. --- .../commons/vfs2/provider/DefaultFileContent.java | 4 ++-- .../commons/vfs2/provider/FileContentThreadData.java | 18 +++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java index 786386a..f58abf7 100644 --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java @@ -442,7 +442,7 @@ public final class DefaultFileContent implements FileContent { final FileContentThreadData threadData = getFileContentThreadData(); // Close the input stream - while (threadData.getInstrsSize() > 0) { + while (threadData.hasInputStream()) { final InputStream inputStream = threadData.removeInputStream(0); try { if (inputStream instanceof FileContentInputStream) { @@ -459,7 +459,7 @@ public final class DefaultFileContent implements FileContent { } // Close the randomAccess stream - while (threadData.getRastrsSize() > 0) { + while (threadData.hasRandomAccessContent()) { final FileRandomAccessContent randomAccessContent = (FileRandomAccessContent) threadData .removeRastr(0); try { diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java index d2a6646..14704a6 100644 --- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java +++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java @@ -29,8 +29,8 @@ class FileContentThreadData { // private int state = DefaultFileContent.STATE_CLOSED; - private final ArrayList<InputStream> inputStreamList = new ArrayList<>(); - private final ArrayList<RandomAccessContent> randomAccessContentList = new ArrayList<>(); + private ArrayList<InputStream> inputStreamList; + private ArrayList<RandomAccessContent> randomAccessContentList; private DefaultFileContent.FileContentOutputStream outputStream; FileContentThreadData() { @@ -43,6 +43,8 @@ class FileContentThreadData { */ void addInstr(final InputStream inputStream) { + if (this.inputStreamList == null) + this.inputStreamList = new ArrayList<>(); this.inputStreamList.add(inputStream); } @@ -55,11 +57,13 @@ class FileContentThreadData { } void addRastr(final RandomAccessContent randomAccessContent) { + if (this.randomAccessContentList == null) + this.randomAccessContentList = new ArrayList<>(); this.randomAccessContentList.add(randomAccessContent); } - int getInstrsSize() { - return this.inputStreamList.size(); + boolean hasInputStream() { + return this.inputStreamList != null && !this.inputStreamList.isEmpty(); } public Object removeInstr(final int pos) { @@ -83,7 +87,7 @@ class FileContentThreadData { } public boolean hasStreams() { - return !inputStreamList.isEmpty() || outputStream != null || !randomAccessContentList.isEmpty(); + return hasInputStream() || outputStream != null || hasRandomAccessContent(); } public void closeOutstr() throws FileSystemException { @@ -91,7 +95,7 @@ class FileContentThreadData { outputStream = null; } - int getRastrsSize() { - return randomAccessContentList.size(); + boolean hasRandomAccessContent() { + return randomAccessContentList != null && !randomAccessContentList.isEmpty(); } }