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

Eclipse OpenJ9 中的类共享(3)共享类实用程序

Eclipse OpenJ9 中的类共享(3)共享类实用程序

共享类实用程序可以使用一些实用程序来管理共享类缓存,所有这些实用程序都是 -Xshareclasses 的 。(可以通过 java -Xshareclasses:help                                获取所有子选项的完整列表。)
为了演示这些选项的用法,让我们来看一些示例。
首先,让我们用不同的缓存名称运行 Hello 类来创建两个共享缓存,如清单 1 所示:
清单 1. 创建两个共享缓存
1
2
3
4
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -cp .-Xshareclasses:name=Cache1 Hello
Hello
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -cp .-Xshareclasses:name=Cache2 Hello
Hello




运行 listAllCaches 子选项会列出系统上的所有缓存,并确定它们是否已被使用,如清单 2 所示:
清单 2. 列出所有共享缓存
1
2
3
4
5
6
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -Xshareclasses:listAllCaches
Listing all caches in cacheDir C:\Users\Hang Shao\AppData\Local\javasharedresources\
Cache name              level         cache-type      feature         last detach time
Compatible shared caches
Cache1                  Java8 64-bit  persistent      cr              Mon Apr 23 15:48:12 2018
Cache2                  Java8 64-bit  persistent      cr              Mon Apr 23 15:49:46 2018




运行 printStats 选项会输出指定缓存上的摘要统计数据,如清单 3 所示。要获得关于 printStats                                        选项的详细描述,请参阅 。
清单 3. 一个共享缓存的摘要统计数据
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -Xshareclasses:name=Cache1,printStats

Current statistics for cache "Cache1":

Cache created with:
        -Xnolinenumbers                      = false
        BCI Enabled                          = true
        Restrict Classpaths                  = false
        Feature                              = cr

Cache contains only classes with line numbers

base address                         = 0x000000001214C000
end address                          = 0x0000000013130000
allocation pointer                   = 0x0000000012297DB8

cache size                           = 16776608
softmx bytes                         = 16776608
free bytes                           = 13049592
ROMClass bytes                       = 1359288
AOT bytes                            = 72
Reserved space for AOT bytes         = -1
Maximum space for AOT bytes          = -1
JIT data bytes                       = 1056
Reserved space for JIT data bytes    = -1
Maximum space for JIT data bytes     = -1
Zip cache bytes                      = 902472
Data bytes                           = 114080
Metadata bytes                       = 18848
Metadata % used                      = 0%
Class debug area size                = 1331200
Class debug area used bytes          = 132152
Class debug area % used              = 9%

# ROMClasses                         = 461
# AOT Methods                        = 0
# Classpaths                         = 2
# URLs                               = 0
# Tokens                             = 0
# Zip caches                         = 5
# Stale classes                      = 0
% Stale classes                      = 0%

Cache is 22% full

Cache is accessible to current user = true




还有其他一些 printStats 子选项可用来输出共享缓存中的特定数据。可以在 printStats=help                                中找到它们。例如,可以通过 printStats=classpath 检查类路径数据:
清单 4. 列出共享缓存的类路径内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -Xshareclasses:name=Cache1,printStats=classpath

Current statistics for cache "Cache1":

1: 0x000000001360E3FC CLASSPATH
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\bin\compressedrefs\jclSC180\vm.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\se-service.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\rt.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\resources.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\jsse.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\charsets.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\jce.jar
        C:\OpenJ9\wa6480_openj9\j2sdk-image\jre\lib\tools.jar
1: 0x000000001360A144 CLASSPATH
        C:\OpenJ9






共享缓存可使用 destroy 选项进行销毁,如清单 5 所示。类似地,destroyAll                                会销毁所有未使用且用户有权销毁的缓存。
清单 5. 销毁一个缓存
1
2
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -Xshareclasses:name=Cache1,destroy
JVMSHRC806I Compressed references persistent shared cache "Cache1" has been destroyed.如果想要销毁非压缩引用缓存,可以使用 -Xnocompressedrefs 选项。




如清单 6 所示,expire                                选项是一个清理选项,您可以将其添加到命令行,以便自动销毁在指定分钟数内未附加任何内容的缓存。清单 6 查找一周(10,080                                分钟)内未使用过的缓存,并在启动 JVM 之前销毁它们。
reset 选项总是创建一个新的共享缓存。如果存在同名的缓存,则销毁它并创建一个新的缓存。
清单 6. 销毁一周内未使用过的缓存
1
2
C:\OpenJ9>wa6480_openj9\j2sdk-image\bin\java -Xshareclasses:name=Cache1,expire=10080 Hello
Hello

返回列表