Github user franz1981 commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1752#discussion_r160006951
--- Diff:
artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ServerPacketDecoder.java
---
@@ -83,16 +85,34 @@
public class ServerPacketDecoder extends ClientPacketDecoder {
+ private static final int UUID_LENGTH = 36;
+ private static final int DEFAULT_INTERNER_CAPACITY = 32;
private static final long serialVersionUID = 3348673114388400766L;
- public static final ServerPacketDecoder INSTANCE = new
ServerPacketDecoder();
+ private SimpleString.Interner keysInterner;
+ private TypedProperties.StringValue.Interner valuesInterner;
- private static SessionSendMessage decodeSessionSendMessage(final
ActiveMQBuffer in, CoreRemotingConnection connection) {
+ public ServerPacketDecoder() {
+ this.keysInterner = null;
+ this.valuesInterner = null;
+ }
+
+ private void initializeInternersIfNeeded() {
--- End diff --
It is fragile due to how escape analysis work: looking just at the code the
array escapes partially so it is not always true that will live on the stack...
And considering that the intern could steal it...probably it wont's work...
I've fought many years against these weird things of the JVM dear Michael :(
---