Enum MemoryMode

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<MemoryMode>

    public enum MemoryMode
    extends java.lang.Enum<MemoryMode>
    The memory semantics of the SDK.
    Since:
    1.31.0
    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
      IMMUTABLE_DATA
      Uses immutable data structures.
      REUSABLE_DATA
      Reuses objects to reduce allocations.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private MemoryMode()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static MemoryMode valueOf​(java.lang.String name)
      Returns the enum constant of this type with the specified name.
      static MemoryMode[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      • Methods inherited from class java.lang.Enum

        clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Enum Constant Detail

      • REUSABLE_DATA

        public static final MemoryMode REUSABLE_DATA
        Reuses objects to reduce allocations.

        In this mode, the SDK reuses objects to reduce allocations, at the expense of disallowing concurrent collections / exports.

        Metric Signal: For DELTA aggregation temporality, the memory used for recording and aggregating metric values is kept between MetricReader collect operation, to avoid memory allocations. When the configured maximum cardinality of Attributes is reached, unused Attributes are cleared from memory during collect operation, at the cost of requiring new memory allocations the next time those attributes are used. Allocations can be minimized by increasing the configured max cardinality. For example, suppose instrumentation has recorded values for 1000 unique Attributes while the max cardinality configured was 2000. If after a collection only 100 unique Attributes values are recorded, the MetricReader's collect operation would return 100 points, while in memory the Attributes data structure keeps 1000 unique Attributes. If a user recorded values for 3000 unique attributes, the values for the first 1999 Attributes would be recorded, and the rest of 1001 unique Attributes values would be recorded in the CARDINALITY_OVERFLOW Attributes. If after several collect operations, the user now records values to only 500 unique attributes, during collect operation, the unused 1500 Attributes memory would be cleared from memory.

      • IMMUTABLE_DATA

        public static final MemoryMode IMMUTABLE_DATA
        Uses immutable data structures.

        In this mode, the SDK passes immutable objects to exporters / readers, increasing allocations but ensuring safe concurrent exports.

        Metric Signal: In DELTA aggregation temporality, the memory used for recording and aggregating Attributes values is cleared during a MetricReader collect operation.

    • Constructor Detail

      • MemoryMode

        private MemoryMode()
    • Method Detail

      • values

        public static MemoryMode[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (MemoryMode c : MemoryMode.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static MemoryMode valueOf​(java.lang.String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
        Parameters:
        name - the name of the enum constant to be returned.
        Returns:
        the enum constant with the specified name
        Throws:
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        java.lang.NullPointerException - if the argument is null