diff --git a/src/main/java/cn/org/hentai/dns/stat/StatManager.java b/src/main/java/cn/org/hentai/dns/stat/StatManager.java index 589d204..c333abf 100644 --- a/src/main/java/cn/org/hentai/dns/stat/StatManager.java +++ b/src/main/java/cn/org/hentai/dns/stat/StatManager.java @@ -1,6 +1,7 @@ package cn.org.hentai.dns.stat; import cn.org.hentai.dns.util.Configs; +import cn.org.hentai.dns.util.Conversion; import cn.org.hentai.dns.util.Packet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +34,9 @@ public final class StatManager private StatManager() { - logs = Packet.create(1024 * 1024 * 200); + String lmem = Configs.get("dns.stat-logger.memory"); + int i = Conversion.toByte(lmem); + logs = Packet.create(i); domainNameMap = new HashMap(); sequence = 1; diff --git a/src/main/java/cn/org/hentai/dns/util/Conversion.java b/src/main/java/cn/org/hentai/dns/util/Conversion.java new file mode 100644 index 0000000..fab87b5 --- /dev/null +++ b/src/main/java/cn/org/hentai/dns/util/Conversion.java @@ -0,0 +1,35 @@ +package cn.org.hentai.dns.util; + +/** + * Created by huangzhian on 2019/10/21. + */ +public class Conversion { + + /** + * 将配置的缓存空间单位KMG转换为byte, + * 因为int类型的限制,将最大缓存空间设为1G + */ + public static int toByte(String memory) { + int count = 0; + String mem; + if (memory == null) { + return 0; + } + mem = memory.toUpperCase(); + if (mem.matches("[0-9]+[KMG]{1}")) { + String submem = memory.substring(0, memory.length() - 1); + count = Integer.parseInt(submem); + } else if (mem.matches("[0-9]+")) { + count = Integer.parseInt(memory); + } + if (mem.endsWith("M")) { + return (count > 1024 ? 1024 : count) << 20; + } else if (mem.endsWith("G")) { + return (count > 1 ? 1 : count) << 30; + } else if (mem.endsWith("K")) { + return count << 10; + } else { + return count; + } + } +}