Github user franz1981 commented on the issue: https://github.com/apache/activemq-artemis/pull/2012 @michaelandrepearce Michael have good points on that, especially for such important classes. @cshannon I have anyway the results: ``` # Running 64-bit HotSpot VM. # Using compressed oop with 3-bit shift. # Using compressed klass with 3-bit shift. # Objects are 8 bytes aligned. # Field sizes by type: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes] # Array element sizes: 4, 1, 1, 2, 2, 4, 4, 8, 8 [bytes] org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 12 (object header) N/A 12 4 int Node.iterCount N/A 16 4 org.apache.activemq.artemis.utils.collections.LinkedListImpl.Node Node.next N/A 20 4 org.apache.activemq.artemis.utils.collections.LinkedListImpl.Node Node.prev N/A 24 8 long MessageReferenceImpl.scheduledDeliveryTime N/A 32 8 long MessageReferenceImpl.consumerID N/A 40 4 int MessageReferenceImpl.deliveryCount N/A 44 4 int MessageReferenceImpl.persistedCount N/A 48 1 boolean MessageReferenceImpl.hasConsumerID N/A 49 1 boolean MessageReferenceImpl.alreadyAcked N/A 50 2 (alignment/padding gap) 52 4 org.apache.activemq.artemis.api.core.Message MessageReferenceImpl.message N/A 56 4 org.apache.activemq.artemis.core.server.Queue MessageReferenceImpl.queue N/A 60 4 java.lang.String MessageReferenceImpl.sessionId N/A 64 4 java.lang.Object MessageReferenceImpl.protocolData N/A 68 4 (loss due to the next object alignment) Instance size: 72 bytes Space losses: 2 bytes internal + 4 bytes external = 6 bytes total ***************************************************** org.apache.activemq.artemis.core.paging.cursor.PagedReferenceImpl object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 12 (object header) N/A 12 4 int Node.iterCount N/A 16 4 org.apache.activemq.artemis.utils.collections.LinkedListImpl.Node Node.next N/A 20 4 org.apache.activemq.artemis.utils.collections.LinkedListImpl.Node Node.prev N/A 24 8 long PagedReferenceImpl.deliveryTime N/A 32 8 long PagedReferenceImpl.consumerID N/A 40 8 long PagedReferenceImpl.transactionID N/A 48 8 long PagedReferenceImpl.messageID N/A 56 8 long PagedReferenceImpl.messageSize N/A 64 4 int PagedReferenceImpl.persistedCount N/A 68 4 int PagedReferenceImpl.messageEstimate N/A 72 4 int PagedReferenceImpl.deliveryCount N/A 76 1 boolean PagedReferenceImpl.hasConsumerID N/A 77 1 boolean PagedReferenceImpl.alreadyAcked N/A 78 1 byte PagedReferenceImpl.largeMessage N/A 79 1 (alignment/padding gap) 80 4 org.apache.activemq.artemis.core.paging.cursor.PagePosition PagedReferenceImpl.position N/A 84 4 java.lang.ref.WeakReference PagedReferenceImpl.message N/A 88 4 java.lang.String PagedReferenceImpl.sessionId N/A 92 4 org.apache.activemq.artemis.core.paging.cursor.PageSubscription PagedReferenceImpl.subscription N/A 96 4 java.lang.Object PagedReferenceImpl.protocolData N/A 100 4 (loss due to the next object alignment) Instance size: 104 bytes Space losses: 1 bytes internal + 4 bytes external = 5 bytes total ***************************************************** org.apache.activemq.artemis.core.server.impl.LastValueQueue$HolderReference object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 12 (object header) N/A 12 1 boolean HolderReference.hasConsumerID N/A 13 3 (alignment/padding gap) 16 8 long HolderReference.consumerID N/A 24 4 org.apache.activemq.artemis.api.core.SimpleString HolderReference.prop N/A 28 4 org.apache.activemq.artemis.core.server.MessageReference HolderReference.ref N/A 32 4 java.lang.String HolderReference.sessionId N/A 36 4 org.apache.activemq.artemis.core.server.impl.LastValueQueue HolderReference.this$0 N/A Instance size: 40 bytes Space losses: 3 bytes internal + 0 bytes external = 3 bytes total ```
---