首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Eclipse OpenJ9 中的类共享(9)内存占用

Eclipse OpenJ9 中的类共享(9)内存占用

内存占用在多个 JVM 中运行示例程序时,也很容易看出内存的节省。
下面是使用与之前的示例相同的机器获得的 4 幅 VMMap 截图。在图 4 中,在没有启用类共享的情况下,完整运行了演示的两个实例。在图 5                                中,在启用了类共享的情况下,使用与之前相同的命令行完整运行了两个实例。
图 4. 没有启用类共享的两个演示实例图 5. 启用了类共享的两个演示实例试验中的共享缓存大小为 50MB,所以图 5 中每个实例的映射文件比图 4 中的大 50MB (56736KB – 5536KB)。
可以清楚地看到,启用共享类时的内存使用量 (Private WS) 明显要低得多。对于两个 JVM 实例,实现了约 70MB Private WS                                的节省。如果在启用了类共享的情况下启动更多演示实例,就会观察到更多的内存节省。上面的测试结果是在拥有 32GB RAM、使用                                Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz 的 Windows 10                                笔记本电脑上获得的。
我们还在一台 Linux x64 机器上执行了同样的内存占用试验。清单 15 给出了在未启用类共享情况下启动两个 JVM 实例的结果,清单 16                                给出了在启用类共享情况下启动两个 JVM 实例的结果。
如果查看结果就会发现,在启用类共享时,RSS 没有表现出太大的改善。这是因为整个共享缓存都包含在 RSS 中。但是如果我们查看                                PSS,就会看到节省了约 34MB,PSS 仅为每个 JVM 计算了一半的共享缓存(因为它由这两个 JVM 共享)。
清单 15. 禁用类共享情况下 Linux                                上的内存占用
1
2
3
4
5
6
7
8
9
10
11
12
pmap -X 9612
9612:   xa6480_openj9/j2sdk-image/jre/bin/java -cp shcdemo.jar ClassLoadStress
Address Perm  …   Size    Rss     Pss Referenced Anonymous Swap Locked Mapping

                ======= ======= ===== ========   ========= ==== ====
                2676500 118280 106192 118280     95860     0    0 KB
pmap -X 9850
9850:   xa6480_openj9/j2sdk-image/jre/bin/java -cp shcdemo.jar ClassLoadStress
Address Perm  …   Size    Rss     Pss Referenced Anonymous Swap Locked Mapping

                ======= ======= ===== ========   ========= ==== ====
                2676500 124852 112792 124852     102448    0    0 KB




清单 16. 启用类共享情况下 Linux                                上的内存占用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pmap -X 4501
4501:   xa6480_openj9/j2sdk-image/jre/bin/java -Xshareclasses:name=demo -Xscmx50m -cp shcdemo.jar ClassLoadStress
Address Perm  …   Size    Rss     Pss Referenced Anonymous Swap Locked Mapping

7fe7d0e00000 rw-s 4       4       2       4        0    0      0 C290M4F1A64P_demo_G35
7fe7d0e01000 r--s 33356   33356   16678   33356    0    0      0 C290M4F1A64P_demo_G35
7fe7d2e94000 rw-s 11096   48      24      48       0    0      0 C290M4F1A64P_demo_G35
7fe7d396a000 r--s 5376    1640    832     1640     0    0      0 C290M4F1A64P_demo_G35
7fe7d3eaa000 rw-s 296     0       0       0        0    0      0 C290M4F1A64P_demo_G35
7fe7d3ef4000 r--s 1072    0       0       0        0    0      0 C290M4F1A64P_demo_G35

                  ======= ======= ===== ======== ====== ====== ====
                  2732852 120656  90817 97988    62572  0      0 KB
pmap -X 4574
4574:   xa6480_openj9/j2sdk-image/jre/bin/java -Xshareclasses:name=demo -Xscmx50m -cp shcdemo.jar ClassLoadStress
Address Perm  …   Size    Rss     Pss Referenced Anonymous Swap Locked Mapping

7f308ce00000 rw-s 4       4       2       4        0    0      0 C290M4F1A64P_demo_G35
7f308ce01000 r--s 33356   33356   16678   33356    0    0      0 C290M4F1A64P_demo_G35
7f308ee94000 rw-s 11080   48      24      48       0    0      0 C290M4F1A64P_demo_G35
7f308f966000 r--s 5392    1632    824     1632     0    0      0 C290M4F1A64P_demo_G35
7f308feaa000 rw-s 296     0       0       0        0    0      0 C290M4F1A64P_demo_G35
7f308fef4000 r--s 1072    0       0       0        0    0      0 C290M4F1A64P_demo_G35

                  ======= ======= ===== ======== ====== ====== ====
                  2730800 122832  92911 102584   64812  0      0 KB

返回列表