[
https://issues.apache.org/jira/browse/HBASE-16300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15398576#comment-15398576
]
Yu Li commented on HBASE-16300:
-------------------------------
Checking the history and this should be regression of HBASE-14793 which fixed
count of boolean but miscount long as reference.
{noformat}
+ private final long maxBlockSize;
...
public final static long CACHE_FIXED_OVERHEAD = ClassSize.align(
- (3 * Bytes.SIZEOF_LONG) + (9 * ClassSize.REFERENCE) +
- (5 * Bytes.SIZEOF_FLOAT) + Bytes.SIZEOF_BOOLEAN
+ (3 * Bytes.SIZEOF_LONG) + (10 * ClassSize.REFERENCE) +
+ (5 * Bytes.SIZEOF_FLOAT) + (2 * Bytes.SIZEOF_BOOLEAN)
+ ClassSize.OBJECT);
{noformat}
+1 on patch, nice catch
> LruBlockCache.CACHE_FIXED_OVERHEAD should calculate LruBlockCache size
> correctly
> --------------------------------------------------------------------------------
>
> Key: HBASE-16300
> URL: https://issues.apache.org/jira/browse/HBASE-16300
> Project: HBase
> Issue Type: Bug
> Reporter: Yu Sun
> Assignee: Yu Sun
> Attachments: HBASE-16300-v1.patch
>
>
> in current master {{LruBlockCache}}, CACHE_FIXED_OVERHEAD is calculated as
> this:
> {code}
> public final static long CACHE_FIXED_OVERHEAD = ClassSize.align(
> (3 * Bytes.SIZEOF_LONG) + (10 * ClassSize.REFERENCE) +
> (5 * Bytes.SIZEOF_FLOAT) + (2 * Bytes.SIZEOF_BOOLEAN)
> + ClassSize.OBJECT);
> {code}
> after some investigation. I think there are some wrong here, {{class
> LruBlockCache}}, except static varible(which is belongs to class), there are
> 4 long varibles(maxBlockSize,maxSize,blockSize and overhead), 9 reference
> varibles and 2 boolean varibles, so the above code will not calculate
> LruBlockCache instance size correctly.
> current related ut not failed mostly due to the result is 8 bytes aligned.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)