private boolean checkMaxDepth(final int maxDepth, final boolean abortWhenMaxDepthExceeded, boolean warned, final IdentityHashMap<Object, Object> visited) { if (visited.size() >= maxDepth) { if (abortWhenMaxDepthExceeded) { throw new MaxDepthExceededException(MessageFormat.format(ABORT_MESSAGE, maxDepth)); } else if (!warned) { LOG.warn(MessageFormat.format(CONTINUE_MESSAGE, maxDepth)); warned = true; } } return warned; }
we.addToMeasuredSize(result); throw we;
/** * {@inheritDoc} */ public Size sizeOf(final Object key, final Object value, final Object container) { Size size; try { size = sizeOf.deepSizeOf(maxDepth, abortWhenMaxDepthExceeded, key, value, container); } catch (MaxDepthExceededException e) { LOG.warn(e.getMessage()); LOG.warn("key type: {}", key.getClass().getName()); LOG.warn("key: {}", key); LOG.warn("value type: {}", value.getClass().getName()); LOG.warn("value: {}", value); LOG.warn("container: {}", container); size = new Size(e.getMeasuredSize(), false); } if (USE_VERBOSE_DEBUG_LOGGING && LOG.isDebugEnabled()) { LOG.debug("size of {}/{}/{} -> {}", new Object[]{key, value, container, size.getCalculated()}); } return size; } }
/** * {@inheritDoc} */ public Size sizeOf(final Object key, final Object value, final Object container) { Size size; try { size = sizeOf.deepSizeOf(maxDepth, abortWhenMaxDepthExceeded, key, value, container); } catch (MaxDepthExceededException e) { LOG.warn(e.getMessage()); LOG.warn("key type: " + key.getClass().getName()); LOG.warn("key: " + key); LOG.warn("value type: " + value.getClass().getName()); LOG.warn("value: " + value); LOG.warn("container: " + container); size = new Size(e.getMeasuredSize(), false); } if (USE_VERBOSE_DEBUG_LOGGING && LOG.isDebugEnabled()) { LOG.debug("size of {}/{}/{} -> {}", new Object[]{key, value, container, size.getCalculated()}); } return size; } }
private boolean checkMaxDepth(final int maxDepth, final boolean abortWhenMaxDepthExceeded, boolean warned, final IdentityHashMap<Object, Object> visited) { if (visited.size() >= maxDepth) { if (abortWhenMaxDepthExceeded) { throw new MaxDepthExceededException(MessageFormat.format(ABORT_MESSAGE, maxDepth)); } else if (!warned) { LOG.warn(MessageFormat.format(CONTINUE_MESSAGE, maxDepth)); warned = true; } } return warned; }
we.addToMeasuredSize(result); throw we;
/** * {@inheritDoc} */ public Size sizeOf(final Object key, final Object value, final Object container) { Size size; try { size = sizeOf.deepSizeOf(maxDepth, abortWhenMaxDepthExceeded, key, value, container); } catch (MaxDepthExceededException e) { LOG.warn(e.getMessage()); LOG.warn("key type: {}", key.getClass().getName()); LOG.warn("key: {}", key); LOG.warn("value type: {}", value.getClass().getName()); LOG.warn("value: {}", value); LOG.warn("container: {}", container); size = new Size(e.getMeasuredSize(), false); } if (USE_VERBOSE_DEBUG_LOGGING && LOG.isDebugEnabled()) { LOG.debug("size of {}/{}/{} -> {}", new Object[]{key, value, container, size.getCalculated()}); } return size; } }
private boolean checkMaxDepth(final int maxDepth, final boolean abortWhenMaxDepthExceeded, boolean warned, final IdentityHashMap<Object, Object> visited) { if (visited.size() >= maxDepth) { if (abortWhenMaxDepthExceeded) { throw new MaxDepthExceededException(MessageFormat.format(ABORT_MESSAGE, maxDepth)); } else if (!warned) { LOG.warn(MessageFormat.format(CONTINUE_MESSAGE, maxDepth)); warned = true; } } return warned; }
we.addToMeasuredSize(result); throw we;
/** * Measures the size in memory (heap) of the objects passed in, walking their graph down * Any overlap of the graphs being passed in will be recognized and only measured once * * @param maxDepth maximum depth of the object graph to traverse * @param abortWhenMaxDepthExceeded true if the object traversal should be aborted when the max depth is exceeded * @param obj the root objects of the graphs to measure * @return the total size in bytes for these objects * @see #sizeOf(Object) */ public Size deepSizeOf(int maxDepth, boolean abortWhenMaxDepthExceeded, Object... obj) { try { return new Size(walker.walk(maxDepth, abortWhenMaxDepthExceeded, obj), true); } catch (MaxDepthExceededException e) { LOG.warn(e.getMessage()); return new Size(e.getMeasuredSize(), false); } }
private boolean checkMaxDepth(final int maxDepth, final boolean abortWhenMaxDepthExceeded, boolean warned, final IdentityHashMap<Object, Object> visited) { if (visited.size() >= maxDepth) { if (abortWhenMaxDepthExceeded) { throw new MaxDepthExceededException(MessageFormat.format(ABORT_MESSAGE, maxDepth)); } else if (!warned) { LOG.warn(MessageFormat.format(CONTINUE_MESSAGE, maxDepth)); warned = true; } } return warned; }