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 <[email protected]>
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();
}
}