## Heap Walker - List of Inspections |

| The following inspections are provided by JProfiler: Custom filter [Custom inspections] Filter all objects in the current object set with a code snippet. Return `true` if an object should be added to the new object set and `false` if it should be discarded. Note: In the reference view, you can apply a filter to a selected outgoing chain of references. Configuration options: Filter script The script that decides whether an object should be part of the new object set or not. The script is passed a `currentObject` parameter. If you return `true`, the object will be retained, otherwise it will be discarded. Custom grouping [Custom inspections] Group the current object set with a code snippet. Return the key for each object as a `java.lang.String` object. Objects with the same key will be in the same group. After the inspection is calculated, you will see a statistics table at the top of all heap walker view where you can select each group and analyze its members separately. Configuration options: Grouping script The script that returns the group name of the group that the object should be part of. The script is passed a `currentObject` parameter. If all objects in the current object set are of the same class, the parameter is typed, so you will get code completion for the parameter. If you return `null`, the object will be retained, otherwise it will be added to the group with the name of the returned string value. Duplicate strings [Duplicate objects] Find duplicate `java.lang.String` objects in the current object set. After the inspection is calculated, you will see a statistics table at the top of all heap walker view where you can select each duplicate string value and analyze the corresponding string objects separately. Note: If no `java.lang.String` objects are contained in the current object set, the inspection will return the empty object set. Configuration options: Minimum length The minimum size as an integer value. The default size is 20. Duplicate primitive wrappers [Duplicate objects] Find duplicate primitive wrapper objects like `java.lang.Integer` in the current object set. After the inspection is calculated, you will see a statistics table at the top of all heap walker view where you can select each duplicate primitive value and analyze the corresponding wrapper objects separately. Note: If no wrapper objects of the selected type are contained in the current object set, the inspection will return the empty object set. Configuration options: Primitive wrapper type The primitive type for which the inspection will be calculated. One of "Boolean,Byte,Character,Double,Float,Integer,Long,Short". Duplicate arrays [Duplicate objects] Find duplicate arrays in the current object set. After the inspection is calculated, you will see a statistics table at the top of all heap walker view where you can select each duplicate array value and analyze the corresponding arrays separately. Note: If no arrays of the selected type are contained in the current object set, the inspection will return the empty object set. Configuration options: Minimum shallow size in bytes The minimum size as an integer value. The default size is 100. Array type The array type for which the inspection will be calculated. One of "Object,Boolean,Byte,Character,Double,Float,Integer,Long,Short". Sparse arrays [Collections & Arrays] Find object arrays that contain a high percentage of `null` values. After the inspection is calculated, the reference view will show columns with the overhead in bytes and the percentage of null values. You can sort the arrays on both of these columns. Note: If no arrays of the selected type are contained in the current object set, the inspection will return the empty object set. Configuration options: Minimum shallow size in bytes The minimum size as an integer value. The default size is 100. Arrays with zero length [Collections & Arrays] Find object arrays whose length is zero. This may be an opportunity to use a `null` value in order to reduce memory consumption. Note: If no arrays of the selected type are contained in the current object set, the inspection will return the empty object set. Configuration options: Array type The array type for which the inspection will be calculated. One of "Object,Boolean,Byte,Character,Double,Float,Integer,Long,Short". Hash maps with bad key distribution [Collections & Arrays] Find hash maps with a bad distribution of keys. This may be an opportunity to improve the `hasCode()` method of objects in order to speed up lookups in the map. After the inspection is calculated, the reference view will show a column with the distribution quality. The objects with the highest hash map distribution quality will be at the top. Configuration options: Minimum map size The minimum size as an integer value. The default size is 20. Null fields [Reference & field analysis] Find objects with fields that have a high percentage of null values. These fields could be moved to derived classes or aggregated objects. Weakly referenced objects [Reference & field analysis] Find objects that are (transitively) referenced through a weak, soft of phantom reference. To analyze the reference paths, go to the "Reference" view after the inspection is calculated and show the path to the garbage collector root for selected objects. Configuration options: Reference type The type of the reference for which the inspection will be calculated, one of "Weak reference,Soft reference,Phantom reference". Objects retained by inner class [Reference & field analysis] Find objects that only referenced implicitly by one of their non-static inner classes. Sometimes this can be the cause of a memory leak. Objects with many incoming references [Reference & field analysis] Find objects that have many incoming references. After the inspection is calculated, the reference view will show a column with the incoming reference count. The objects with the most incoming references will be at the top. Objects that reference themselves [Reference & field analysis] Find objects that reference themselves directly. This may be an opportunity to remove a field. After the inspection is calculated, the reference view will show a column with the self-reference count. The objects with the most self-references will be at the top.