org.jvnet.hudson.test
Class MemoryAssert

java.lang.Object
  extended by org.jvnet.hudson.test.MemoryAssert

public class MemoryAssert
extends Object

Static utility methods for verifying heap memory usage. Uses the INSANE library to traverse the heap from within your test.

Object sizes are in an idealized JVM in which pointers are 4 bytes (realistic even for modern 64-bit JVMs in which -XX:+UseCompressedOops is the default) but objects are aligned on 8-byte boundaries (so dropping an int field does not always save memory).

import static org.jvnet.hudson.test.MemoryAssert.*; to use.


Nested Class Summary
static class MemoryAssert.HistogramElement
           
 
Method Summary
static void assertGC(WeakReference<?> reference)
          Forces GC by causing an OOM and then verifies the given WeakReference has been garbage collected.
static void assertHeapUsage(Object o, int max)
          Verifies that an object and its transitive reference graph occupy at most a predetermined amount of memory.
static List<MemoryAssert.HistogramElement> increasedMemory(Callable<Void> callable, org.netbeans.insane.scanner.Filter... filters)
          Counts how much more memory is held in Jenkins by doing some operation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

assertHeapUsage

public static void assertHeapUsage(Object o,
                                   int max)
                            throws Exception
Verifies that an object and its transitive reference graph occupy at most a predetermined amount of memory. The referents of WeakReference and the like are ignored.

To use, run your test for the first time with max of 0; when it fails, use the reported actual size as your assertion maximum. When improving memory usage, run again with 0 and tighten the test to both demonstrate your improvement quantitatively and prevent regressions.

Parameters:
o - the object to measure
max - the maximum desired memory usage (in bytes)
Throws:
Exception

increasedMemory

public static List<MemoryAssert.HistogramElement> increasedMemory(Callable<Void> callable,
                                                                  org.netbeans.insane.scanner.Filter... filters)
                                                           throws Exception
Counts how much more memory is held in Jenkins by doing some operation.

Parameters:
callable - an action
filters - things to exclude
Returns:
a histogram of the heap delta after running the operation
Throws:
Exception
Since:
1.500

assertGC

public static void assertGC(WeakReference<?> reference)
Forces GC by causing an OOM and then verifies the given WeakReference has been garbage collected.

Parameters:
reference - object used to verify garbage collection.


Copyright © 2004-2013. All Rights Reserved.