allbet gaming手机版下载:StringTable结构以及基本调优

admin 1个月前 (08-10) 科技 176 2

  JDK1.8中StringTable的底层类似于HashTable,由数组和链表实现,数组又称为桶数组。好比有这样一段代码:

public class Demo4 {
    public static void main(String[] args) {
        int i = 0;
        System.out.println(i);
    }
}

我们设置虚拟机参数“-Xmx10m -XX:+PrintStringTableStatistics -XX:+PrintGCDetails -verbose:gc“,参数详细的意思是 设置堆内存巨细为10M,输出StringTableStatistics信息,输出GC细节。运行代码控制台会有响应的输出,主要看下StringTable部门。默认桶的个数是60013,存储的字符串工具个数为1752,串池中字符串常量个数为也是1752,总的占用空间约为0.6M。上面代码只是输出i,但串池中常量个数为1752,那是由于类名、方式名等这些数据也是以常量的形式存在串池中。

接着稍微改动代码:

public class Demo4 {
    public static void main(String[] args) {
        int i = 0;
        // 往串池中添加100个字符串
        for (int j = 0; j < 100; j++) {
            String.valueOf(j).intern();
            i++;
        }
        System.out.println(i);
    }
}

这时候我们可以看到串池中字符串个数为1871,比默认多了100个。

继续用上述代码做实验,这会for循环次数为10000,看控制台输出有什么转变。

字符串个数为7451并不是11751,由于我们设置了堆内存巨细为10M,存10000个字符串工具的话堆内存发生了MinorGC,将一些无用的工具回收了。

allbet gaming手机版下载:StringTable结构以及基本调优 第1张

调优

  • 调优主要是对StringTable巨细的设置,若是程序中字符串数目异常多,那么可以将桶个数设置大一些,详细参数为 -XX:StringTableSize = 巨细,默认是60013,最小是1009。有这样一段代码:
public class Demo5 {
    public static void main(String[] args) throws IOException {
       try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("linux.words"), "utf-8"))) {
            String line = null;
            long start = System.nanoTime();
            while (true) {
                line = reader.readLine();
                if (line == null) {
                    break;
                }
                line.intern();
            }
            System.out.println("cost:" + (System.nanoTime() - start) / 1000000);
        }
    }
}

  "linux.words"中有480000个字符串,读取文件然后将字符串放入串池,纪录整个历程消耗时间,以ms为单元而且打印信息。默认桶个数下消耗时间为0.57秒。    

        allbet gaming手机版下载:StringTable结构以及基本调优 第2张

  我们设置 -XX:StringTableSize=1009再考察下消耗时间,变为了9.852秒。以是可根据营业场景来设置桶个数巨细。 

        allbet gaming手机版下载:StringTable结构以及基本调优 第3张

  • 若是应用里有大量字符串而且存在许多重复的字符串,可以思量使用intern()方式将字符串入池,而不是都存在Eden区中,这样字符串仅会占用较少的空间。

 

,

AllbetGmaing手机版下载

欢迎进入AllbetGmaing手机版下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:allbet gaming手机版下载:StringTable结构以及基本调优

网友评论

  • (*)

最新评论

  • Filecoin官网 2021-05-12 00:04:27 回复

    欧博APP欢迎进入欧博APP(Allbet Game),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。看得出来很用心

    1
    • 新2手机管理端 2021-07-22 15:48:17 回复

      @Filecoin官网

      IPFS合租矿机www.ipfs8.vip)是Filecoin致力服务于使用Filecoin存储和检索数据的官方权威平台。IPFS官网实时更新FiLecion(FIL)行情、当前FiLecion(FIL)矿池、FiLecion(FIL)收益数据、各类FiLecion(FIL)矿机出售信息。并开放FiLecion(FIL)交易所、IPFS云矿机、IPFS矿机出售、IPFS矿机合租、IPFS算力合租、IPFS招商等业务。

      内容好精彩啊

标签列表

    文章归档

      站点信息

      • 文章总数:1648
      • 页面总数:0
      • 分类总数:8
      • 标签总数:1326
      • 评论总数:2321
      • 浏览总数:165168