Package org.jvnet.hudson.test
Class MemoryAssert
java.lang.Object
org.jvnet.hudson.test.MemoryAssert
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
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
assertGC
(WeakReference<?> reference) Deprecated.static void
assertGC
(WeakReference<?> reference, boolean allowSoft) Forces GC by causing an OOM and then verifies the givenWeakReference
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.
-
Method Details
-
assertHeapUsage
Verifies that an object and its transitive reference graph occupy at most a predetermined amount of memory. The referents ofWeakReference
and the like are ignored.To use, run your test for the first time with
max
of0
; when it fails, use the reported actual size as your assertion maximum. When improving memory usage, run again with0
and tighten the test to both demonstrate your improvement quantitatively and prevent regressions.- Parameters:
o
- the object to measuremax
- 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 actionfilters
- things to exclude- Returns:
- a histogram of the heap delta after running the operation
- Throws:
Exception
- Since:
- 1.500
-
assertGC
Deprecated. -
assertGC
Forces GC by causing an OOM and then verifies the givenWeakReference
has been garbage collected.- Parameters:
reference
- object used to verify garbage collection.allowSoft
- if true, pass even ifSoftReference
s apparently needed to be cleared by forcing anOutOfMemoryError
; if false, fail in such a case (though the failure will be slow)
-