- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
听说过
为了加速 Maven 构建,我下载了 jdk9-ea
并发现它需要更长的时间。而且,感觉Maven启动前的延迟比较长。
我尝试使用以下代码粗略测量 JVM 启动时间
public class Sampler {
public static void main(String[] args) throws IOException, InterruptedException {
long t = System.currentTimeMillis();
if (args.length == 0 || args[0].startsWith("-")) {
sample(30, args);
} else {
long t0 = Long.parseLong(args[0]);
System.out.println(t - t0);
}
}
static void sample(int n, String[] options) throws IOException, InterruptedException {
File samples = new File("samples.txt");
for (int i = 0; i < n; i++) {
String javaPath = String.join(
System.getProperty("file.separator"),
System.getProperty("java.home"),
"bin",
"java");
List<String> command = new ArrayList<String>();
command.add(javaPath);
command.addAll(Arrays.asList(options));
command.add("Sampler");
command.add(Long.toString(System.currentTimeMillis()));
ProcessBuilder processBuilder = new ProcessBuilder(command)
.inheritIO()
.redirectOutput(ProcessBuilder.Redirect.appendTo(samples));
Process process = processBuilder.start();
process.waitFor();
}
prettyPrint(samples);
samples.delete();
}
...
}
而且从 Java 9 开始需要两倍的时间
>java -versionjava version "1.8.0_74"Java(TM) SE Runtime Environment (build 1.8.0_74-b02)Java HotSpot(TM) Client VM (build 25.74-b02, mixed mode, sharing)>javac Sampler.java && java Samplern=30 units=milisec min=124 max=205 mean=143 median=132>java -versionjava version "9-ea"Java(TM) SE Runtime Environment (build 9-ea+111)Java HotSpot(TM) Client VM (build 9-ea+111, mixed mode)>javac Sampler.java && java Samplern=30 units=milisec min=279 max=387 mean=301 median=294>javac Sampler.java && java Sampler -XX:+UseParallelGCn=30 units=milisec min=279 max=382 mean=297 median=292>java -versionjava version "1.8.0_76-ea"Java(TM) SE Runtime Environment (build 1.8.0_76-ea-b04)Java HotSpot(TM) Client VM (build 25.76-b04, mixed mode, sharing)>javac Sampler.java && java Samplern=30 units=milisec min=123 max=227 mean=159 median=141>java Sampler -XX:+UseG1GCn=99 units=milisec min=188 max=340 mean=213 median=199
注意:最初我使用的是服务器虚拟机 (x64),相同的 2 倍差距,Java9 启动时间约为 0.6 秒。
在 java -Xshare:dump
之后
>java -versionjava version "9-ea"Java(TM) SE Runtime Environment (build 9-ea+111)Java HotSpot(TM) Client VM (build 9-ea+111, mixed mode, sharing)>javac Sampler.java && java Samplern=50 units=milisec min=228 max=422 mean=269 median=269>javac Sampler.java && java Sampler -Xshare:on<error messages>n=44 units=milisec min=227 max=392 mean=247 median=238>javac Sampler.java && java Sampler -Xshare:offn=50 units=milisec min=280 max=513 mean=315 median=288>javac Sampler.java && java Sampler -Xshare:auton=50 units=milisec min=228 max=361 mean=283 median=285
使用 Java 8
>java -Xshare:off Samplern=99 units=milisec min=124 max=264 mean=150 median=136
错误信息:
An error has occurred while processing the shared archive file. Unable to map ReadOnly shared space at required address.Error occurred during initialization of VMUnable to use shared archive.
50 次中有 44 次成功开始是我能得到的最高数字。最低的是 - 13。
最佳答案
是的,在当前的 EA 构建中肯定存在一些启动倒退 - 一些原因是已知的并且正在积极解决 - 其他更像是“千刀万剐”的磨难:在开发过程中积累的小而微不足道的低效率JDK 9 作为功能实现和集成,然后必须在实际发布之前进行微调和优化。
编辑:在后续的 JDK 版本中,我们消除了 JDK 9 引入的大多数启动回归。一个值得注意的异常(exception)是由 JEP 280 引起的启动回归。 JDK 库中无害的字符串连接可能会在某些应用程序中导致很小但很明显的开销。
关于java - Java 9 ea 有启动时间倒退吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180051/
昨天,我在 Google Play 控制台上使用 Expo build:android 发布了我的 App 构建,但收到错误消息: SDK Segment Analytics Android (com
我在 MetaTrader4 终端中编写了一个简单的警报 EA 我想在所有 FOREX Majors 和 FOREX Minors 上运行我的 EA,我已经完成了所有代码,但我希望它自动在我的 [Ma
几年来,我一直在 EA 中广泛使用脚本。今天早上,我进入 EA 开始构建新脚本,但脚本似乎不再有效。我试着写“Hello World”,甚至写了一个有语法错误的脚本。它既不检测错误也不运行脚本。 我看
我正在使用 Enterprise Architect 的试用版,我刚刚创建了我想从中生成 MySQL 脚本的数据库模式。我查看了手册,它说我必须选择包,然后单击工具,然后单击 od 数据库工程。但是在
所以我有一个数字让我们说 19356 我希望它看起来像 1|9|3|5|6 并且它也都带有下划线。这可能不破坏数字并添加管道和下划线吗?它也不一定是管道,只是数字之间的一条线。 最佳答案 我有办法
我在编译我的 Angular 时遇到问题 ERROR in Error during the template compile of 'ɵa' 装饰器不支持函数调用,但在“Injectable”中调用
您好,我目前遇到了 EA 中事件图的问题。我正在尝试描述代码。当我添加开始控制节点和事件节点时,我无法通过控制流连接它们。 当我尝试将两个事件与控制流连接在一起时,同样的问题发生了——我收到以下错误:
我正在使用 Sparx EA(当前版本)逆向工程一个简单的小测试解决方案到类图(C#,如果重要的话)。只有两个类。测试 1 和测试 2。 Test1 有一个属性; public List test2l
球窝符号是合法的 UML 2.0,但我找不到强制 EA 将其绘制在图表上的方法。它拒绝允许套接字和球之间的依赖关系。有没有办法让它发生,如下图所示(小毫秒绘画魔法): 另外,一个附带的问题,你能让球或
我正在通过插件创建聚合连接器。我可以使用下面提到的代码创建没有强目标端点的连接器。 EA.Connector connector = signalEle.Connectors.AddNew("", "
有没有人对 Rational Software Architect 与 Sparx EA 有任何想法?我还应该查看其他工具吗?具体来说,我对以下内容感兴趣; 坚持某些方法论(RUP、SOMF 等)——
谁能告诉我根据事件发生的次数和模式计算重复事件的结束日期的最佳方法。 例如:我有一个事件,开始日期为 10/07/2014(星期二),每周星期二发生。该事件将在发生 10 次后结束(假设)。因此,我的
我完全迷失在这里 -我一直在尝试获取 Azure EA 门户(其中列出了所有订阅)中的所有订阅的列表。在 GUI/Web 端,我们一次只能看到 10 个,然后必须转到下一页,等等。没有简单的方法可以导
如何找回我在 enterprise Architect 中误删除的图表?我在谷歌中搜索,但没有找到任何方法来检索图表。 最佳答案 使用你的备份。 如果你没有,那你就不走运了。 关于diagram -
是否可以在 EA 中以类似于 HTML 生成的方式以编程方式触发文档生成? 有没有办法像下面的“RunHTMLReport”那样生成文档? “RunHTMLReport(PackageGUID,Exp
我已经使用 C# 创建了 10 个标签。在 10 个标签中,我只想删除 3 个标签。 如何按名称删除标签? 最佳答案 不幸的是,通过自动化界面删除信息的唯一方法是通过索引。要删除您需要迭代该集合,找到
我有以下代码创建了一个新的 EA 模型和该模型的子包。然而,子包似乎只是“可视化”更新/创建的——我的意思是我可以在 EA 中看到它,但如果我尝试获取新根目录的包,它会返回 0,这应该是 1。 var
我正在使用 EA Api 的“EA_OnPostNewElement”来修改工具箱中删除的元素。一旦我将元素从工具箱放到图表中,就会弹出 EA 属性对话框。即使使用后 Repository.Suppr
我对 EA 中的数百个订阅拥有“计费阅读器”访问权限。 我正在尝试获取所有订阅中的虚拟机及其大小的列表。 目前,当我运行“Get-AzureRMSubscription”时,它会向我显示所有订阅(数百
如何在 Azure EA 门户中删除部门? 我知道我可以进入 EA 门户并手动删除它,但是有什么方法可以以编程方式删除它吗? ...以及必然的问题... 是否有某种方法可以以编程方式创建一个? 最佳答
我是一名优秀的程序员,十分优秀!