Package org.apache.pdfbox.io
Class MemoryUsageSetting
- java.lang.Object
-
- org.apache.pdfbox.io.MemoryUsageSetting
-
public final class MemoryUsageSetting extends java.lang.ObjectControls how memory/temporary files are used for buffering streams etc.
-
-
Field Summary
Fields Modifier and Type Field Description private longmaxMainMemoryBytesmaximum number of main-memory bytes allowed to be used;-1means 'unrestricted'private longmaxStorageBytesmaximum number of bytes allowed for storage at all (main-memory+file);-1means 'unrestricted'RandomAccessStreamCache.StreamCacheCreateFunctionstreamCacheImplementation of the function to create an instance of ScratchFile using the current settings.private java.io.FiletempDirdirectory to be used for scratch fileprivate booleanuseMainMemoryprivate booleanuseTempFile
-
Constructor Summary
Constructors Modifier Constructor Description privateMemoryUsageSetting(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 longgetMaxMainMemoryBytes()Returns maximum size of main-memory in bytes to be used.longgetMaxStorageBytes()Returns maximum size of storage bytes to be used (main-memory in temporary files all together).java.io.FilegetTempDir()Returns directory to be used for temporary files ornullif it was not set.booleanisMainMemoryRestricted()Returnstrueif maximum main memory is restricted to a specific number of bytes.booleanisStorageRestricted()Returnstrueif maximum amount of storage is restricted to a specific number of bytes.MemoryUsageSettingsetTempDir(java.io.File tempDir)Sets directory to be used for temporary files.static MemoryUsageSettingsetupMainMemoryOnly()Setups buffering memory usage to only use main-memory (no temporary file) which is not restricted in size.static MemoryUsageSettingsetupMainMemoryOnly(long maxMainMemoryBytes)Setups buffering memory usage to only use main-memory with the defined maximum.static MemoryUsageSettingsetupMixed(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 MemoryUsageSettingsetupMixed(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 MemoryUsageSettingsetupTempFileOnly()Setups buffering memory usage to only use temporary file(s) (no main-memory) with not restricted size.static MemoryUsageSettingsetupTempFileOnly(long maxStorageBytes)Setups buffering memory usage to only use temporary file(s) (no main-memory) with the specified maximum size.java.lang.StringtoString()booleanuseMainMemory()Returnstrueif main-memory is to be used.booleanuseTempFile()Returnstrueif 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;-1means 'unrestricted'
-
maxStorageBytes
private final long maxStorageBytes
maximum number of bytes allowed for storage at all (main-memory+file);-1means 'unrestricted'
-
tempDir
private java.io.File tempDir
directory to be used for scratch file
-
streamCache
public final RandomAccessStreamCache.StreamCacheCreateFunction streamCache
Implementation of the function to create an instance of ScratchFile using the current settings.
-
-
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- iftruemain memory usage is enabled; in case offalseanduseTempFileisfalsetoo we set this totrueuseTempFile- iftrueusing of temporary file(s) is enabledmaxMainMemoryBytes- maximum number of main-memory to be used; if-1means 'unrestricted'; if0we only use temporary file ifuseTempFileistrueotherwise main-memory usage will have restriction defined by maxStorageBytesmaxStorageBytes- maximum size the main-memory and temporary file(s) may have all together;0or 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.- Returns:
- returns an instance of MemoryUsageSetting set up to use unlimited memory
-
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;-1for no restriction;0will also be interpreted here as no restriction- Returns:
- returns an instance of MemoryUsageSetting set up to use main memory
-
setupTempFileOnly
public static MemoryUsageSetting setupTempFileOnly()
Setups buffering memory usage to only use temporary file(s) (no main-memory) with not restricted size.- Returns:
- returns an instance of MemoryUsageSetting set up to use temporary files 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;-1for no restriction;0will also be interpreted here as no restriction- Returns:
- returns an instance of MemoryUsageSetting set up to use temporary files with restricted size
-
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-1this is the same assetupMainMemoryOnly(); if0this is the same assetupTempFileOnly()- Returns:
- returns an instance of MemoryUsageSetting set up to use a mixed setting
-
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-1this is the same assetupMainMemoryOnly(); if0this is the same assetupTempFileOnly()maxStorageBytes- maximum size the main-memory and temporary file(s) may have all together;0or less will be ignored; if it is less than maxMainMemoryBytes we use maxMainMemoryBytes value instead- Returns:
- returns an instance of MemoryUsageSetting set up to use a mixed setting
-
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()
Returnstrueif main-memory is to be used.If this returns
falseit is ensureduseTempFile()returnstrue.- Returns:
- true if this instance is set up to use main memory
-
useTempFile
public boolean useTempFile()
Returnstrueif temporary file is to be used.If this returns
falseit is ensureduseMainMemoryreturnstrue.- Returns:
- true if this instance is set up to use temporary files
-
isMainMemoryRestricted
public boolean isMainMemoryRestricted()
Returnstrueif maximum main memory is restricted to a specific number of bytes.- Returns:
- true if this instance is set up to restrict main memory
-
isStorageRestricted
public boolean isStorageRestricted()
Returnstrueif maximum amount of storage is restricted to a specific number of bytes.- Returns:
- true if this instance is set up to restrict storage size
-
getMaxMainMemoryBytes
public long getMaxMainMemoryBytes()
Returns maximum size of main-memory in bytes to be used.- Returns:
- the maximum number 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).- Returns:
- the maximum size of storage bytes to be used
-
getTempDir
public java.io.File getTempDir()
Returns directory to be used for temporary files ornullif it was not set.- Returns:
- the temp dir to bes used for temporary files or null
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-