为发布一个单窗口桌面应用,不想带几十兆的jre.
按 java -jar -verbose:class test.jar >> 1.txt 进行抽取.复制.打包成新的rt.jar;
---------------------------------------------------------------
结果:
用新的jre(包含新抽取的rt.jar) 运行,
.\jre\java -jar test.jar
程序可以正常运行.没有错误 程序退出时,,进程里两个java.exe只有一个自动关闭掉.另一个java.exe进程不能自动关闭. 用本机原来的jre运行
java -jar test.jar
程序一切正常,退出时,两个java.exe都可以自动关闭. ---------------------------------------------------------------- 怀疑:
抽取rt.jar时,对rt.jar中垃圾收集,资源释放等的class没有抽取出来 请问:
1: rt.jar中负责释放相关资源的包或者类有 哪些?
2: 这种情况或者还有别的原因?
lang包中System;System$1;System$2
打包进去,没有变化;还是没有解决
Java是可以在运行时随时加载需要的类,当程序启动没有用到这些类时是不需要加载的,所以不会出现在-verbose里我的建议是:
1、你可以用别的性能测量工具,把所有功能都跑一遍,找齐全要加载的所有类
2、你可以从源代码下手,看看哪些是在运行时导入的
3、你可以使用小的JRE,类似2楼说的
不光rt.jar可以减肥