Sha256: ededbfcf131217b026fe845df4592d80c1d729c77cb1f88bb43de41cbebf3c76

Contents?: true

Size: 1.04 KB

Versions: 13

Compression:

Stored size: 1.04 KB

Contents

module SemanticLogger
  module JRuby
    class GarbageCollectionLogger
      include Java::JavaxManagement::NotificationListener

      # Only log the garbage collection if the number of microseconds exceeds
      # this value
      def initialize(min_microseconds = 10000)
        @min_microseconds = min_microseconds
      end

      # Must leave the method name as-is so that it can be found by Java
      def handleNotification(notification, _)
        # Only care about GARBAGE_COLLECTION_NOTIFICATION notifications
        return unless notification.get_type == Java::ComSunManagement::GarbageCollectionNotificationInfo::GARBAGE_COLLECTION_NOTIFICATION

        info     = Java::ComSunManagement::GarbageCollectionNotificationInfo.from(notification.user_data)
        gc_info  = info.gc_info
        duration = gc_info.duration
        if duration >= @min_microseconds
          SemanticLogger['GarbageCollector'].measure_warn "Garbage Collection completed: #{info.gc_name} ##{gc_info.id}", duration: duration.to_f / 1000
        end
      end
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
semantic_logger-4.2.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.1.1 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.1.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.0.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.0.0.rc1 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.0.0.beta2 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-4.0.0.beta1 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.4.1 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.4.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.3.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.2.1 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.2.0 lib/semantic_logger/jruby/garbage_collection_logger.rb
semantic_logger-3.1.0 lib/semantic_logger/jruby/garbage_collection_logger.rb