### Question:
MemoryAwareThreadPoolExecutor extends ThreadPoolExecutor { public long getMaxTotalMemorySize() { if (totalLimiter == null) { return 0; } return totalLimiter.limit; } MemoryAwareThreadPoolExecutor(
            int corePoolSize, long maxChannelMemorySize, long maxTotalMemorySize);  MemoryAwareThreadPoolExecutor(
            int corePoolSize, long maxChannelMemorySize, long maxTotalMemorySize,
            long keepAliveTime, TimeUnit unit);  MemoryAwareThreadPoolExecutor(
            int corePoolSize, long maxChannelMemorySize, long maxTotalMemorySize,
            long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory);  MemoryAwareThreadPoolExecutor(
            int corePoolSize, long maxChannelMemorySize, long maxTotalMemorySize,
            long keepAliveTime, TimeUnit unit, ObjectSizeEstimator objectSizeEstimator,
            ThreadFactory threadFactory); @Override List<Runnable> shutdownNow(); List<Runnable> shutdownNow(boolean notify); ObjectSizeEstimator getObjectSizeEstimator(); void setObjectSizeEstimator(ObjectSizeEstimator objectSizeEstimator); long getMaxChannelMemorySize(); void setMaxChannelMemorySize(long maxChannelMemorySize); long getMaxTotalMemorySize(); @Deprecated void setMaxTotalMemorySize(long maxTotalMemorySize); void setNotifyChannelFuturesOnShutdown(boolean notifyOnShutdown); boolean getNotifyChannelFuturesOnShutdown(); @Override void execute(Runnable command); @Override boolean remove(Runnable task);  }### Answer:
@Test public void testNPEOnUnlimetedExecutor() { MemoryAwareThreadPoolExecutor executor = new MemoryAwareThreadPoolExecutor(2, 0, 0); assertEquals(0, executor.getMaxTotalMemorySize()); }