我正在开发和运行基于groovy的Jenkins管道作业,我们的代码执行多个线程,需要高CPU和内存。
由于JProfiler是一个功能强大的Java评测工具,因此我想在Jenkins管道作业中收集有关我的groovy代码的性能信息,这些作业在代理上运行,因此我将能够排除代码缺陷并优化代码。
以下是在构建中创建自动分析报告的策略:
在构建代理上,您需要的是分析代理,而不是整个JProfiler安装。使用远程集成向导获取VM参数,该参数必须通过调用
会议-
从主菜单。
在向导中选择"在远程计算机上"选项
以及“启动模式”步骤中的“配置文件脱机”选项。
在“远程安装目录”步骤中,有一个用于下载目标平台的代理存档的链接。在此步骤中,将其解压缩到某个目录并输入该路径。
然后设置一些触发器来记录分析数据,如手册中所述:
https://www.ej-technologies.com/resources/jprofiler/help/doc/main/offline.html
更改配置文件后,必须将其传输到生成代理计算机,如集成向导的“配置同步”步骤中所述。
如果已将“保存快照”操作添加到触发器,则将有一个。测试程序运行后的jps快照文件。您可以在JProfiler UI中手动打开,或使用命令行工具以HTML或文本格式提取数据:
https://www.ej-technologies.com/resources/jprofiler/help/doc/commandLine/snapshotExecutables.html
groovy源代码中有选项检查吗?
JProfiler不处理源代码,而是处理编译的类文件,所以它可以处理所有JVM语言,包括Groovy。
在Joshua Bloch的有效JAVA中,当我阅读静态工厂方法时,有一个声明如下 静态工厂方法从重复调用中返回相同对象的能力允许类在任何时候对存在的实例保持严格控制。这样做的类称为实例控制类。编写实例控制类有几个原因。实例控件允许类保证它是单实例(第3项)或不可实例化(第4项)。此外,它允许一个不可变类(项目15)保证不存在两个相等的实例:a.equals(b)当且仅当a==b。如果一个类做出此
问题内容: 我在基于JBoss的Web应用程序中使用JAXBContext.newInstance操作。据我了解,此操作非常繁重。我只需要Marshaller类的两个唯一实例。 我最初的建议是要有一个静态初始值设定项块,该类将在加载类时仅初始化一次这两个实例: 如果这是一个合理的解决方案,那么我想我会回答自己的问题,但是我想知道这是否是正确的方法? 问题答案: JAXB实现(Metro,Eclip
我第一次使用spring batch应用程序,由于框架太灵活了,我有几个关于性能和实现作业的最佳实践的问题,在spring文档中找不到明确的答案。 > 读取由第三方以先前指定的布局发送的具有固定列长值的ASCII文件(第1步读取器) 在oracle数据库上写入有效行(第1步写入器) 执行前一步后,使用第1步的finish时间戳更新数据库中的表(第2步tasklet) 当作业停止时,发送一封电子邮件
问题内容: 我正在编写一些可调用的代码,并且执行了数千次。显然,由于反射,这非常慢。 我想看看是否可以在Java 7中使用以提高性能。到目前为止,这里是我所拥有的: 代替,我在做: 但是,这似乎并不比使用反射的Field.set调用更好。我在这里做错什么了吗? 我读到使用可能会更快,但是当我尝试使用它时,得到了。 有谁成功地优化了对Field.set或Field.get的重复调用? 问题答案: 2
我正在编写一些调用和几千次的代码。显然这是非常缓慢的,因为反射。 我想看看是否可以在Java7中使用来提高性能。到目前为止,我有以下资料: 不是,而是: 但是,这似乎并不比使用反射的field.set调用执行得更好。我是不是做错什么了? 我读到使用可能更快,但当我尝试使用它时,我得到了一个。 是否有人成功地优化了对field.set或field.get的重复调用?
问题内容: 我有2张桌子,和。用户可以有很多游戏。我需要所有有人数的人,以及他们的人数(有专栏的)。 附言:我需要将所有数据加载到管理表中。由于游戏太多。我决定对数据进行分页和限制。但是,甚至限制以下查询也需要花费相同的时间。如何更好地查询? 问题答案: 您可以在下面尝试使用表达式