标签: jsa

通过向classes.jsa添加自己的应用程序类来加速应用程序启动

为了加快JVM的启动时间,Sun开发人员决定在安装JVM期间为平台预编译标准运行时类是个好主意.这些预编译的类可以在以下位置找到:

$ JAVA_HOME\jre的\ BIN \客户端\ classes.jsa

我的公司目前开发了一个Java独立应用程序,它带来了自己的JRE,因此通过在这个jsa文件中添加我们自己的应用程序类来加速我们的应用程序启动时间是一个很棒的选择.

我不相信JSA文件是由魔术创建的,所以:它是如何创建的?如何欺骗JVM合并我自己的类?

编辑:我已经发现以下内容:

classes.jsa由命令创建

java -Xshare:dump
Run Code Online (Sandbox Code Playgroud)

可以在中找到要包含在转储中的类列表$JAVA_HOME/jre/lib/classlist.

我甚至设法在这里添加我自己的类(并将它们添加到rt.jar中以便java找到它们),并在classlist文件下面生成我自己的校验和.

最后一个问题是:只有java,com.sun和org.w3c包中的类似乎被识别,如果我在原始包中保留相同的类,它们将不会被加载.我在整个OpenJDK源代码中搜索了这个指针,但它似乎与保护域有关.如果有人对这个主题感兴趣并且知识渊博,请添加一些指示让我进一步调查.

java jvm startup jsa

32
推荐指数
3
解决办法
9091
查看次数

Java代码是保存在本地编译的类数据共享存档(classes.jsa)中还是字节码?

我想知道创建类数据共享存档(通过运行java -Xshare:dump)是否将字节代码编译为本机代码.

关于类数据共享内部的文档并不多.我链接的页面说明了这一点java -Xshare:dump

将一组类从系统jar文件加载到私有内部表示中,并将该表示转储到文件中.

但是没有说明这个代码是否被编译.

(可能相关:通过向classes.jsa添加自己的应用程序类来加速应用程序启动)

java performance jit jvm jsa

7
推荐指数
1
解决办法
683
查看次数

标签 统计

java ×2

jsa ×2

jvm ×2

jit ×1

performance ×1

startup ×1