C:\Work\mem>cl /c /O2 checker.c checker.c C:\Work\mem>cl /c /O2 memtest2.c memtest2.c C:\Work\mem>cl memtest2.obj checker.obj Microsoft (R) Incremental Linker Version 14.29.30138.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:memtest2.exe memtest2.obj checker.obj C:\Work\mem>memtest2 1000000 objects of 10 bytes : 0.080 us per object (0.000 processing) 1000000 objects of 20 bytes : 0.060 us per object (0.020 processing) 1000000 objects of 30 bytes : 0.080 us per object (0.030 processing) 1000000 objects of 40 bytes : 0.080 us per object (0.030 processing) 2000000 objects of 10 bytes : 0.065 us per object (0.010 processing) 2000000 objects of 20 bytes : 0.060 us per object (0.020 processing) 2000000 objects of 30 bytes : 0.070 us per object (0.025 processing) 2000000 objects of 40 bytes : 0.065 us per object (0.035 processing) 3000000 objects of 10 bytes : 0.063 us per object (0.010 processing) 3000000 objects of 20 bytes : 0.067 us per object (0.017 processing) 3000000 objects of 30 bytes : 0.070 us per object (0.027 processing) 3000000 objects of 40 bytes : 0.070 us per object (0.033 processing) 4000000 objects of 10 bytes : 0.065 us per object (0.010 processing) 4000000 objects of 20 bytes : 0.065 us per object (0.018 processing) 4000000 objects of 30 bytes : 0.075 us per object (0.025 processing) 4000000 objects of 40 bytes : 0.070 us per object (0.033 processing) C:\Work\mem>gcc -Wall -c -O3 checker.c -o checker.obj C:\Work\mem>gcc -Wall -c -O3 memtest2.c -o memtest2.obj C:\Work\mem>gcc memtest2.obj checker.obj -o memtest2.exe C:\Work\mem>memtest2 1000000 objects of 10 bytes : 0.060 us per object (0.010 processing) 1000000 objects of 20 bytes : 0.070 us per object (0.010 processing) 1000000 objects of 30 bytes : 0.080 us per object (0.020 processing) 1000000 objects of 40 bytes : 0.090 us per object (0.010 processing) 2000000 objects of 10 bytes : 0.080 us per object (0.005 processing) 2000000 objects of 20 bytes : 0.065 us per object (0.010 processing) 2000000 objects of 30 bytes : 0.070 us per object (0.015 processing) 2000000 objects of 40 bytes : 0.080 us per object (0.010 processing) 3000000 objects of 10 bytes : 0.073 us per object (0.007 processing) 3000000 objects of 20 bytes : 0.070 us per object (0.007 processing) 3000000 objects of 30 bytes : 0.073 us per object (0.013 processing) 3000000 objects of 40 bytes : 0.077 us per object (0.010 processing) 4000000 objects of 10 bytes : 0.070 us per object (0.007 processing) 4000000 objects of 20 bytes : 0.072 us per object (0.005 processing) 4000000 objects of 30 bytes : 0.077 us per object (0.013 processing) 4000000 objects of 40 bytes : 0.080 us per object (0.010 processing) C:\Work\mem>javac -cp . Checker.java C:\Work\mem>javac -cp . MemTest2.java C:\Work\mem>java -server -XX:+UseSerialGC -cp . MemTest2 1000000 objects of 10 bytes : 0.015 us per object (0.017 processing) 1000000 objects of 20 bytes : 0.023 us per object (0.014 processing) 1000000 objects of 30 bytes : 0.024 us per object (0.018 processing) 1000000 objects of 40 bytes : 0.056 us per object (0.024 processing) 2000000 objects of 10 bytes : 0.043 us per object (0.008 processing) 2000000 objects of 20 bytes : 0.038 us per object (0.013 processing) 2000000 objects of 30 bytes : 0.037 us per object (0.017 processing) 2000000 objects of 40 bytes : 0.059 us per object (0.022 processing) 3000000 objects of 10 bytes : 0.061 us per object (0.009 processing) 3000000 objects of 20 bytes : 0.050 us per object (0.013 processing) 3000000 objects of 30 bytes : 0.047 us per object (0.017 processing) 3000000 objects of 40 bytes : 0.062 us per object (0.022 processing) 4000000 objects of 10 bytes : 0.044 us per object (0.008 processing) 4000000 objects of 20 bytes : 0.061 us per object (0.013 processing) 4000000 objects of 30 bytes : 0.067 us per object (0.019 processing) 4000000 objects of 40 bytes : 0.064 us per object (0.022 processing) C:\Work\mem>java -server -XX:+UseParallelGC -cp . MemTest2 1000000 objects of 10 bytes : 0.008 us per object (0.014 processing) 1000000 objects of 20 bytes : 0.015 us per object (0.015 processing) 1000000 objects of 30 bytes : 0.012 us per object (0.023 processing) 1000000 objects of 40 bytes : 0.017 us per object (0.025 processing) 2000000 objects of 10 bytes : 0.011 us per object (0.009 processing) 2000000 objects of 20 bytes : 0.012 us per object (0.013 processing) 2000000 objects of 30 bytes : 0.014 us per object (0.020 processing) 2000000 objects of 40 bytes : 0.020 us per object (0.022 processing) 3000000 objects of 10 bytes : 0.013 us per object (0.008 processing) 3000000 objects of 20 bytes : 0.015 us per object (0.013 processing) 3000000 objects of 30 bytes : 0.016 us per object (0.017 processing) 3000000 objects of 40 bytes : 0.015 us per object (0.025 processing) 4000000 objects of 10 bytes : 0.012 us per object (0.008 processing) 4000000 objects of 20 bytes : 0.013 us per object (0.013 processing) 4000000 objects of 30 bytes : 0.016 us per object (0.016 processing) 4000000 objects of 40 bytes : 0.015 us per object (0.022 processing) C:\Work\mem>java -server -XX:+UseG1GC -cp . MemTest2 1000000 objects of 10 bytes : 0.035 us per object (0.014 processing) 1000000 objects of 20 bytes : 0.069 us per object (0.014 processing) 1000000 objects of 30 bytes : 0.067 us per object (0.018 processing) 1000000 objects of 40 bytes : 0.078 us per object (0.023 processing) 2000000 objects of 10 bytes : 0.061 us per object (0.009 processing) 2000000 objects of 20 bytes : 0.071 us per object (0.014 processing) 2000000 objects of 30 bytes : 0.072 us per object (0.018 processing) 2000000 objects of 40 bytes : 0.074 us per object (0.023 processing) 3000000 objects of 10 bytes : 0.059 us per object (0.009 processing) 3000000 objects of 20 bytes : 0.056 us per object (0.014 processing) 3000000 objects of 30 bytes : 0.068 us per object (0.018 processing) 3000000 objects of 40 bytes : 0.067 us per object (0.023 processing) 4000000 objects of 10 bytes : 0.051 us per object (0.009 processing) 4000000 objects of 20 bytes : 0.057 us per object (0.014 processing) 4000000 objects of 30 bytes : 0.067 us per object (0.018 processing) 4000000 objects of 40 bytes : 0.069 us per object (0.024 processing) C:\Work\mem>java -server -XX:+UseConcMarkSweepGC -cp . MemTest2 1000000 objects of 10 bytes : 0.019 us per object (0.012 processing) 1000000 objects of 20 bytes : 0.024 us per object (0.013 processing) 1000000 objects of 30 bytes : 0.025 us per object (0.017 processing) 1000000 objects of 40 bytes : 0.085 us per object (0.025 processing) 2000000 objects of 10 bytes : 0.063 us per object (0.011 processing) 2000000 objects of 20 bytes : 0.053 us per object (0.015 processing) 2000000 objects of 30 bytes : 0.050 us per object (0.019 processing) 2000000 objects of 40 bytes : 0.094 us per object (0.023 processing) 3000000 objects of 10 bytes : 0.083 us per object (0.009 processing) 3000000 objects of 20 bytes : 0.080 us per object (0.014 processing) 3000000 objects of 30 bytes : 0.075 us per object (0.018 processing) 3000000 objects of 40 bytes : 0.098 us per object (0.022 processing) 4000000 objects of 10 bytes : 0.071 us per object (0.009 processing) 4000000 objects of 20 bytes : 0.091 us per object (0.014 processing) 4000000 objects of 30 bytes : 0.084 us per object (0.017 processing) 4000000 objects of 40 bytes : 0.102 us per object (0.022 processing)