package io.ebeaninternal.server.core;
import java.util.HashMap;
import java.util.concurrent.locks.ReentrantLock;
Used to reduce memory consumption of strings used in deployment processing.
Using this for now instead of String.intern() to avoid any unexpected
increase in PermGen space.
/**
* Used to reduce memory consumption of strings used in deployment processing.
* <p>
* Using this for now instead of String.intern() to avoid any unexpected
* increase in PermGen space.
*/
public final class InternString {
private static final HashMap<String, String> map = new HashMap<>();
private static final ReentrantLock lock = new ReentrantLock();
Return the shared instance of this string.
/**
* Return the shared instance of this string.
*/
public static String intern(String s) {
if (s == null) {
return null;
}
lock.lock();
try {
String v = map.get(s);
if (v != null) {
return v;
} else {
map.put(s, s);
return s;
}
} finally {
lock.unlock();
}
}
}