草庐IT

jvm-cucumber-parallel-plugin

全部标签

java - JVM JIT 诊断工具和优化技巧

我听说过很多关于JVMJIT可以做什么的信息,但是没有看到很多关于如何分析JIT在给定的程序运行中实际做什么的信息。有很多关于使用-XX:+PrintCompilation和-XX:+PrintOptoAssembly的提示,但它会产生难以解释的非常低级的信息。一般来说,在优化过程中,我希望有一套具有专用JIT预热时间等的常见操作基准测试套件,但我希望能够看到哪些优化实际上在我的代码上触发。也许我的JVM考虑过内联一个特定的方法调用,但由于某些原因它决定不这样做,或者JIT无法避免在我的循环中进行数组边界检查,因为我对不变量和循环条件的表述过于模糊。我希望像YourKit这样的工具能够

java - 为什么在 JVM 中交换对象位置?

这个问题在这里已经有了答案:Istheaddressofanobjectfixedduringitslifecycle?(2个答案)关闭9年前。这是我尝试过的:publicfinalclassfirstObj{publicstaticvoidmain(Stringargs[]){Objectobj=newObject();Objectobj1=newObject();System.out.println(obj);System.out.println(obj1);}}我先编译了程序,连续跑了两次,我得到了两个不同的输出:输出1:java.lang.Object@6f548414java

java - 根据 JVM 的内存粒度确定数组的最佳大小

当为(例如)一个集合创建支持数组时,您并不真正关心您创建的数组的确切大小,它只需要至少与您计算的一样大。但是由于内存分配和VM的数组头,在某些情况下可以创建更大的数组而不消耗更多内存-对于Oracle32位VM(至少互联网上的几个来源是这样的)claim),内存粒度为8(意味着任何内存分配都向上舍入到下一个8字节边界),数组头开销为12字节。这意味着在分配Object[2]时,它应该消耗20个字节(12+2*4),但由于粒度的原因,它实际上将占用24个字节。可以以相同的内存成本创建一个Object[3],这意味着集合必须稍后调整其支持数组的大小。同样的原则可以应用于原始数组,例如byt

java - 启动tomcat7 :run maven plugin within eclipse and debug

我想在eclipse中调试一个webapp。我到了tomcat和webapp在Debug模式下在eclipse中运行的地步,但是webapp代码中的断点没有效果。详情webapp是一个mavenArtifact,我在eclipse中使用m2e插件来桥接maven和eclipse。我已经设法从eclipse中启动tomcat服务器。webapp在tomcat中很好地启动,如果我选择的话,也可以在Debug模式下启动:在Eclipse中,右键单击项目运行方式>Maven构建...(不是“Maven构建”)一个窗口打开。在“目标”文本字段中,输入“tomcat7:run”点击应用点击运行to

java : Use Server-Side Encryption in Amazon S3 using vfs s3 plugin

为了在S3中复制文件,我使用的是vfs-s3-2.2.1.jar我在com.intridea.io.vfs.provider.s3包下找到了S3FileObject类。我在其中使用publicvoidcopyFrom(finalFileObjectfile,finalFileSelectorselector)方法复制文件。在这种方法中,我发现了以下代码:try{if(srcFile.getType().hasChildren()){destFile.createFolder();//doserversidecopyifbothsourceanddestareinS3andusingsa

java - jaxb2-maven-plugin 将类路径添加到生成的源

我使用codehausjaxb-maven-plugin从xml模式创建java类:org.codehaus.mojojaxb2-maven-plugin2.2xjcgenerate-sourcesxjcsrc/my.xsdmypackage类按预期生成到target/generated-sources/jaxb,但此路径未添加到类路径中。因此,如果我在其他(未生成的)类中使用一些生成的类,maven在编译过程中无法找到它。有什么想法吗?TIA! 最佳答案 这是jaxb2-maven-plugin中的错误:https://githu

java - Spring Security @WithMockUser 不适用于 cucumber 测试

我正在使用Cucumber测试来测试启用了SpringSecurity的SpringBoot应用程序。一切正常,除非我使用Cucumber测试运行我的测试套件,一些使用SpringSecurity的测试,例如。@WithMockUser(username="BROWSER",roles={"BROWSER","ADMIN"})失败。如果我将它们作为简单的junit测试单独运行,这些测试确实有效,但在使用Cucumber测试步骤运行时失败。当我对Cucumber测试运行相同的行为时,问题看起来像是spring安全测试模拟行为没有得到应用。我的cucumber测试运行类如下@RunWith

java - 远程分析 JVM

我需要远程分析JVM的CPU使用情况、IO统计信息和文件描述符/处理程序计数,并同时支持*NIX和Windows平台。我尝试使用SIGARAPI,它使用底层native代码实现很好地抽象了平台,但它不支持远程分析。是否有替代API可以执行此操作?或者,扩展用于远程JVM监控的SIGAR框架是否可行?关于在哪里查看的任何提示都会有所帮助。提前致谢! 最佳答案 Afaik,JVM通常可以配置为允许远程分析。EclipseTPTP具有概要分析甚至漂亮的图表功能,他们在DataCollectionSubsystem中提到了网络JVisual

java - JDI:如何像在调试器中那样暂停 Java 应用程序 (JVM)

我正在寻找潜在的JDIAPI,以便在JVM执行期间的任意点暂停JVM。看着BreakPointRequestcreateBreakpointRequest方法需要一个特定的位置。是否有任何其他API不需要位置或以某种方式获取可以传递以创建断点的当前位置。我基本上是在寻找一种方法来附加和暂停应用程序,然后使用JVMTI代理接收BreakPoint事件的回调以执行进一步处理。谢谢 最佳答案 断点只对源代码中的某个位置有意义。任意暂停您的应用程序可能最好通过暂停当前在JVM中运行的所有线程来完成。看看SuspendThreadList()

java - JVM 内存问题

请帮我解决一个问题。我的CentOS有4GBRAM,Tomcat配置有大约1500MB内存。在某些时候,当我的机器达到配置的最大线程数(即200)时,它会挂起。我们必须重新启动应用程序服务器才能使其再次运行。参数是:JAVA_OPTS="-server-Xss128k-Xms2048m-Xmx2048m-XX:MaxPermSize=512m-XX:NewRatio=3-XX:SurvivorRatio=6-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:CMSInitiatingOccupancyFraction=80-Dfile.e