我在打开 MeasureMemory 的情况下进行测试,并得到“NonConstantMemoryUsage”异常。
我没有按照错误消息的建议修改代表。我错过了什么?
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 1 elements with size 24 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 1 elements with size 24 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 34 elements with size 88 bytes
[caliper] allocating char array with 1 elements with size 24 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 1 elements with size 24 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 16 elements with size 48 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 70 elements with size 160 bytes
[caliper] allocating char array with 1 elements with size 24 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating char array with 142 elements with size 304 bytes
[caliper] allocating char array with 74 elements with size 168 bytes
[caliper] allocating java/lang/String with size 32 bytes
[caliper] allocating org/apache/commons/collections/map/AbstractReferenceMap$WeakRef with size 32 bytes
[caliper] allocating org/apache/commons/collections/map/AbstractReferenceMap$ReferenceEntry with size 32 bytes
[caliper] allocating java/lang/Object array with 0 elements with size 16 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating org/joda/time/DateTime with size 24 bytes
[caliper] allocating org/hibernate/util/IdentityMap$IdentityKey with size 16 bytes
[caliper] allocating org/hibernate/event/LoadEvent with size 40 bytes
[caliper] allocating org/hibernate/engine/EntityKey with size 48 bytes
[caliper] allocating org/hibernate/event/LoadEvent with size 40 bytes
[caliper] allocating org/hibernate/engine/EntityKey with size 48 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] allocating java/lang/Object array with 1 elements with size 24 bytes
[caliper] ...more allocations...
[caliper] [done measured section]
[caliper] 482 instance(s) allocated per rep
[caliper] 0 out of thread instance(s) allocated in 1 reps
[caliper] [starting measured section]
[caliper] see first run for list of allocations
[caliper] [done measured section]
[caliper] 2966 instance(s) allocated per rep
[caliper] 0 out of thread instance(s) allocated in 2 reps
错误:并非内循环的所有代表都分配了相同的次数!reps 循环应该使用恒定数量的分配。您是否在循环内使用 reps 的值?
现在我评论了 AllocationMeasurer 中抛出 NonConstantMemoryUsage 的代码(不确定这是否是个好主意!),以便我可以继续。我现在得到负字节分配。
0% Scenario{vm=java, trial=0, benchmark=GetCompleteUserInfoByEmail, length=1, trials=5, memory=-Xmx1024M} 5017892000.00 ns; σ=18238565.40 ns @ 3 trials, allocated -45356 instances for a total of -2873264B
50% Scenario{vm=java, trial=0, benchmark=GetUserByEmail, length=10, trials=5, memory=-Xmx1024M} 5044517000.00 ns; σ=25651666.81 ns @ 3 trials, allocated -45816 instances for a total of -2873264B
length instances B s linear runtime
1 -45356.000 -2873264.000 5.02 =============================
10 -45816.000 -2873264.000 5.04 ==============================
vm:java
试用:0
基准测试:GetCompleteUserInfoByEmail
试用:5
内存:-Xmx1024M