Class MemoryUsageSetting

java.lang.Object
org.apache.pdfbox.io.MemoryUsageSetting

public final class MemoryUsageSetting extends Object
Controls how memory/temporary files are used for buffering streams etc.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final long
    maximum number of main-memory bytes allowed to be used; -1 means 'unrestricted'
    private final long
    maximum number of bytes allowed for storage at all (main-memory+file); -1 means 'unrestricted'
    private File
    directory to be used for scratch file
    private final boolean
     
    private final boolean
     
  • 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

    Modifier and Type
    Method
    Description
    long
    Returns maximum size of main-memory in bytes to be used.
    long
    Returns maximum size of storage bytes to be used (main-memory in temporary files all together).
    getPartitionedCopy(int parallelUseCount)
    Returns a copy of this instance with the maximum memory/storage restriction divided by the provided number of parallel uses.
    Returns directory to be used for temporary files or null if it was not set.
    boolean
    Returns true if maximum main memory is restricted to a specific number of bytes.
    boolean
    Returns true if maximum amount of storage is restricted to a specific number of bytes.
    setTempDir(File tempDir)
    Sets directory to be used for temporary files.
    Setups buffering memory usage to only use main-memory (no temporary file) which is not restricted in size.
    setupMainMemoryOnly(long maxMainMemoryBytes)
    Setups buffering memory usage to only use main-memory with the defined maximum.
    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.
    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.
    Setups buffering memory usage to only use temporary file(s) (no main-memory) with not restricted size.
    setupTempFileOnly(long maxStorageBytes)
    Setups buffering memory usage to only use temporary file(s) (no main-memory) with the specified maximum size.
     
    boolean
    Returns true if main-memory is to be used.
    boolean
    Returns true if temporary file is to be used.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Field Details

    • 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 File tempDir
      directory to be used for scratch file
  • Constructor Details

    • 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 - if true main memory usage is enabled; in case of false and useTempFile is false too we set this to true
      useTempFile - if true using of temporary file(s) is enabled
      maxMainMemoryBytes - maximum number of main-memory to be used; if -1 means 'unrestricted'; if 0 we only use temporary file if useTempFile is true otherwise main-memory usage will have restriction defined by maxStorageBytes
      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
  • Method Details

    • 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 as setupMainMemoryOnly(); if 0 this is the same as setupTempFileOnly()
    • 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 as setupMainMemoryOnly(); if 0 this is the same as setupTempFileOnly()
      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(File tempDir)
      Sets directory to be used for temporary files.
      Parameters:
      tempDir - directory for temporary files
      Returns:
      this instance
    • useMainMemory

      public boolean useMainMemory()
      Returns true if main-memory is to be used.

      If this returns false it is ensured useTempFile() returns true.

    • useTempFile

      public boolean useTempFile()
      Returns true if temporary file is to be used.

      If this returns false it is ensured useMainMemory returns true.

    • isMainMemoryRestricted

      public boolean isMainMemoryRestricted()
      Returns true if maximum main memory is restricted to a specific number of bytes.
    • isStorageRestricted

      public boolean isStorageRestricted()
      Returns true 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 File getTempDir()
      Returns directory to be used for temporary files or null if it was not set.
    • toString

      public String toString()
      Overrides:
      toString in class Object