This is an automated email from the ASF dual-hosted git repository.
thiagohp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git
The following commit(s) were added to refs/heads/master by this push:
new 6867911 TAP5-2694: trying to reduce memory usage by interning often
used strings
6867911 is described below
commit 68679118998a1e67280dbbd088f85c874b1c8585
Author: Thiago H. de Paula Figueiredo <[email protected]>
AuthorDate: Thu Oct 7 19:34:12 2021 -0300
TAP5-2694: trying to reduce memory usage by interning often used strings
---
.../java/org/apache/tapestry5/internal/plastic/InheritanceData.java | 2 +-
.../main/java/org/apache/tapestry5/plastic/MethodDescription.java | 6 +++---
.../java/org/apache/tapestry5/internal/bindings/PropBinding.java | 2 +-
.../apache/tapestry5/internal/services/PageElementFactoryImpl.java | 5 ++++-
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git
a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InheritanceData.java
b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InheritanceData.java
index cb98a37..2491503 100644
---
a/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InheritanceData.java
+++
b/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InheritanceData.java
@@ -180,7 +180,7 @@ public class InheritanceData
// everything after the parameter list.
int endOfParameterSpecIdx = desc.indexOf(')');
- return name + ":" + desc.substring(0, endOfParameterSpecIdx+1);
+ return (name + ":" + desc.substring(0,
endOfParameterSpecIdx+1)).intern();
}
/**
diff --git
a/plastic/src/main/java/org/apache/tapestry5/plastic/MethodDescription.java
b/plastic/src/main/java/org/apache/tapestry5/plastic/MethodDescription.java
index 5f8b88f..41a5568 100644
--- a/plastic/src/main/java/org/apache/tapestry5/plastic/MethodDescription.java
+++ b/plastic/src/main/java/org/apache/tapestry5/plastic/MethodDescription.java
@@ -107,9 +107,9 @@ public class MethodDescription implements
Comparable<MethodDescription>
assert PlasticInternalUtils.isNonBlank(methodName);
this.modifiers = modifiers;
- this.returnType = returnType;
- this.methodName = methodName;
- this.genericSignature = genericSignature;
+ this.returnType = returnType.intern();
+ this.methodName = methodName.intern();
+ this.genericSignature = genericSignature.intern();
this.argumentTypes = PlasticInternalUtils.orEmpty(argumentTypes);
this.checkedExceptionTypes =
PlasticInternalUtils.orEmpty(checkedExceptionTypes);
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
index 78e254e..8a77781 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
@@ -46,7 +46,7 @@ public class PropBinding extends AbstractBinding implements
InternalPropBinding
this.root = root;
this.conduit = conduit;
- this.expression = expression;
+ this.expression = expression.intern();
this.toString = toString;
invariant = conduit.getAnnotation(Invariant.class) != null;
diff --git
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
index 333527b..a3e0b74 100644
---
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
+++
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
@@ -45,7 +45,10 @@ public class PageElementFactoryImpl implements
PageElementFactory
LiteralStringProvider(String string)
{
- this.string = string;
+ // Trying to avoid interning too many strings. Longer ones
+ // are less likely to be used more than once. Threshold here
+ // is completely arbitrary.
+ this.string = (string != null && string.length() <= 10) ?
string.intern() : string;
}
public String provideString()