Package org.apache.pdfbox.io
Class MemoryUsageSetting
- java.lang.Object
-
- org.apache.pdfbox.io.MemoryUsageSetting
-
public final class MemoryUsageSetting extends java.lang.Object
Controls how memory/temporary files are used for buffering streams etc.
-
-
Field Summary
Fields Modifier and Type Field Description private long
maxMainMemoryBytes
maximum number of main-memory bytes allowed to be used;-1
means 'unrestricted'private long
maxStorageBytes
maximum number of bytes allowed for storage at all (main-memory+file);-1
means 'unrestricted'private java.io.File
tempDir
directory to be used for scratch fileprivate boolean
useMainMemory
private boolean
useTempFile
-
Constructor Summary
Constructors Modifier Constructor Description private
MemoryUsageSetting(boolean useMainMemory, boolean useTempFile, long maxMainMemoryBytes, long maxStorageBytes)
Private constructor for setup buffering memory usage called by one of the setup methods.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description long
getMaxMainMemoryBytes()
Returns maximum size of main-memory in bytes to be used.long
getMaxStorageBytes()
Returns maximum size of storage bytes to be used (main-memory in temporary files all together).MemoryUsageSetting
getPartitionedCopy(int parallelUseCount)
Returns a copy of this instance with the maximum memory/storage restriction divided by the provided number of parallel uses.java.io.File
getTempDir()
Returns directory to be used for temporary files ornull
if it was not set.boolean
isMainMemoryRestricted()
Returnstrue
if maximum main memory is restricted to a specific number of bytes.boolean
isStorageRestricted()
Returnstrue
if maximum amount of storage is restricted to a specific number of bytes.MemoryUsageSetting
setTempDir(java.io.File tempDir)
Sets directory to be used for temporary files.static MemoryUsageSetting
setupMainMemoryOnly()
Setups buffering memory usage to only use main-memory (no temporary file) which is not restricted in size.static MemoryUsageSetting
setupMainMemoryOnly(long maxMainMemoryBytes)
Setups buffering memory usage to only use main-memory with the defined maximum.static MemoryUsageSetting
setupMixed(long maxMainMemoryBytes)
Setups buffering memory usage to use a portion of main-memory and additionally temporary file(s) in case the specified portion is exceeded.static MemoryUsageSetting
setupMixed(long maxMainMemoryBytes, long maxStorageBytes)
Setups buffering memory usage to use a portion of main-memory and additionally temporary file(s) in case the specified portion is exceeded.static MemoryUsageSetting
setupTempFileOnly()
Setups buffering memory usage to only use temporary file(s) (no main-memory) with not restricted size.static MemoryUsageSetting
setupTempFileOnly(long maxStorageBytes)
Setups buffering memory usage to only use temporary file(s) (no main-memory) with the specified maximum size.java.lang.String
toString()
boolean
useMainMemory()
Returnstrue
if main-memory is to be used.boolean
useTempFile()
Returnstrue
if temporary file is to be used.
-
-
-
Field Detail
-
useMainMemory
private final boolean useMainMemory
-
useTempFile
private final boolean useTempFile
-
maxMainMemoryBytes
private final long maxMainMemoryBytes
maximum number of main-memory bytes allowed to be used;-1
means 'unrestricted'
-
maxStorageBytes
private final long maxStorageBytes
maximum number of bytes allowed for storage at all (main-memory+file);-1
means 'unrestricted'
-
tempDir
private java.io.File tempDir
directory to be used for scratch file
-
-
Constructor Detail
-
MemoryUsageSetting
private MemoryUsageSetting(boolean useMainMemory, boolean useTempFile, long maxMainMemoryBytes, long maxStorageBytes)
Private constructor for setup buffering memory usage called by one of the setup methods.- Parameters:
useMainMemory
- iftrue
main memory usage is enabled; in case offalse
anduseTempFile
isfalse
too we set this totrue
useTempFile
- iftrue
using of temporary file(s) is enabledmaxMainMemoryBytes
- maximum number of main-memory to be used; if-1
means 'unrestricted'; if0
we only use temporary file ifuseTempFile
istrue
otherwise main-memory usage will have restriction defined by maxStorageBytesmaxStorageBytes
- maximum size the main-memory and temporary file(s) may have all together;0
or less will be ignored; if it is less than maxMainMemoryBytes we use maxMainMemoryBytes value instead
-
-
Method Detail
-
setupMainMemoryOnly
public static MemoryUsageSetting setupMainMemoryOnly()
Setups buffering memory usage to only use main-memory (no temporary file) which is not restricted in size.
-
setupMainMemoryOnly
public static MemoryUsageSetting setupMainMemoryOnly(long maxMainMemoryBytes)
Setups buffering memory usage to only use main-memory with the defined maximum.- Parameters:
maxMainMemoryBytes
- maximum number of main-memory to be used;-1
for no restriction;0
will also be interpreted here as no restriction
-
setupTempFileOnly
public static MemoryUsageSetting setupTempFileOnly()
Setups buffering memory usage to only use temporary file(s) (no main-memory) with not restricted size.
-
setupTempFileOnly
public static MemoryUsageSetting setupTempFileOnly(long maxStorageBytes)
Setups buffering memory usage to only use temporary file(s) (no main-memory) with the specified maximum size.- Parameters:
maxStorageBytes
- maximum size the temporary file(s) may have all together;-1
for no restriction;0
will also be interpreted here as no restriction
-
setupMixed
public static MemoryUsageSetting setupMixed(long maxMainMemoryBytes)
Setups buffering memory usage to use a portion of main-memory and additionally temporary file(s) in case the specified portion is exceeded.- Parameters:
maxMainMemoryBytes
- maximum number of main-memory to be used; if-1
this is the same assetupMainMemoryOnly()
; if0
this is the same assetupTempFileOnly()
-
setupMixed
public static MemoryUsageSetting setupMixed(long maxMainMemoryBytes, long maxStorageBytes)
Setups buffering memory usage to use a portion of main-memory and additionally temporary file(s) in case the specified portion is exceeded.- Parameters:
maxMainMemoryBytes
- maximum number of main-memory to be used; if-1
this is the same assetupMainMemoryOnly()
; if0
this is the same assetupTempFileOnly()
maxStorageBytes
- maximum size the main-memory and temporary file(s) may have all together;0
or less will be ignored; if it is less than maxMainMemoryBytes we use maxMainMemoryBytes value instead
-
getPartitionedCopy
public MemoryUsageSetting getPartitionedCopy(int parallelUseCount)
Returns a copy of this instance with the maximum memory/storage restriction divided by the provided number of parallel uses.- Parameters:
parallelUseCount
- specifies the number of parallel usages for the setting to be returned- Returns:
- a copy from this instance with the maximum memory/storage restrictions adjusted to the multiple usage
-
setTempDir
public MemoryUsageSetting setTempDir(java.io.File tempDir)
Sets directory to be used for temporary files.- Parameters:
tempDir
- directory for temporary files- Returns:
- this instance
-
useMainMemory
public boolean useMainMemory()
Returnstrue
if main-memory is to be used.If this returns
false
it is ensureduseTempFile()
returnstrue
.
-
useTempFile
public boolean useTempFile()
Returnstrue
if temporary file is to be used.If this returns
false
it is ensureduseMainMemory
returnstrue
.
-
isMainMemoryRestricted
public boolean isMainMemoryRestricted()
Returnstrue
if maximum main memory is restricted to a specific number of bytes.
-
isStorageRestricted
public boolean isStorageRestricted()
Returnstrue
if maximum amount of storage is restricted to a specific number of bytes.
-
getMaxMainMemoryBytes
public long getMaxMainMemoryBytes()
Returns maximum size of main-memory in bytes to be used.
-
getMaxStorageBytes
public long getMaxStorageBytes()
Returns maximum size of storage bytes to be used (main-memory in temporary files all together).
-
getTempDir
public java.io.File getTempDir()
Returns directory to be used for temporary files ornull
if it was not set.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-