草庐IT

java - Cucumber-jvm线程安全吗?

我想在多个线程中运行相同的Cucumber测试。更具体地说,我有一组功能,在一个线程中运行这些功能效果很好。我使用JSON格式化程序记录每个步骤的运行时间。现在我想做负载测试。我更关心多线程环境下每个特性/步骤的运行时间。所以我创建了多个线程,每个线程都运行在同一个特性集上。每个线程都有自己的JSON报告。这在理论上可能吗?由于某些项目设置原因,我无法使用JUnit运行器。所以我不得不求助于CLI方式:longthreadId=Thread.currentThread().getId();StringjsonFilename=String.format("json:run/cucumb

java - JVM 在退出时挂起

我正在开发一个小型应用程序,该应用程序应使用数字签名签署文档并退出。签名可以位于PKCS#12存档(.pfx文件)或智能卡设备上。使用pfx文件很容易,而且工作正常。但是,有时使用智能卡设备时,进程会在Windows8PC上挂起。文档已正确签名,但进程并未终止。它只是挂起。我正在使用Sun的PKCS#11提供程序-sun.security.pkcs11.SunPKCS11基本上我是这样做的:SunPKCS11provider=newSunPKCS11(configuration);Security.addProvider(provider);.....somework.....prov

java - 带有 jvm args 的可运行 jar

我正在尝试使用Eclipse创建一个可运行的jar文件。问题是我在Eclipse中添加到运行配置的vm参数没有以任何方式保存。我知道我可以创建一个批处理文件来运行带有所需参数的jar,但我更希望我的用户只运行jar本身。因此,我的问题是,有没有什么方法可以不通过命令行将vm参数传递给可运行的jar? 最佳答案 简而言之,如果没有某种形式的包装器,您将无法做到这一点。您可以编写.bat文件和/或.sh脚本以通过适当的设置调用JVM。您可能还想查看JavaServiceWrapper,它提供了一种用可执行参数包装.jar并让它作为独立的

java - 哪些 JVM 优化导致了这些性能结果?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在JavaREST服务性能测试中,我得到了一个意想不到的模式:在每次调用中始终创建和返回相同值对象的方法比仅返回存储在类或对象字段中的值对象的另一个版本运行得更快。代码:@POST@Path("inline")publicResponseinline(Strings){returnResponse.status(Status.CREATED).build();}privatestaticfinal

java - JVM跳转指令的偏移量怎么会是32768呢?

在写answertoaquestionaboutJVMbytecodeoffsets时,我注意到javac的行为和生成的类文件中有一些我无法解释的东西:像这样编译类的时候classFarJump{publicstaticvoidmain(Stringargs[]){call(0,1);}publicstaticvoidcall(intx,inty){if(x那么生成的字节码将包含以下if_icmpge说明:publicstaticvoidcall(int,int);Code:0:iload_01:iload_12:if_icmpge327685:iinc1,18:iinc1,1...根

java - JVM 的 GC 事件的编程通知

我想跟踪在GC上花费了多少时间以及收集了多少内存,但不是通过分析GC日志(即分析我从-XX:+PrintGCWhatever得到的)。我发现我可以使用Sun的ManagementFactory获得一个GarbageCollectorMXBean,它可以给我一些包含内存信息的GCInfo对象,但我不能保证我可以通过这种方式收集所有GC。有人知道在代码中执行此操作的方法吗? 最佳答案 GarbageCollectorMXBean是我能在SunJVM上找到的最好的。根据我的经验,它实际上非常接近您的要求。我想您可以有一个专用线程,它会不时

java - JVM 在内存不足错误期间的行为?列表 s = new ArrayList<String>();

try{for(;;){s.add("Pradeep");}}finally{System.out.println("InFinally");}在tryblock中jvm内存不足,那么jvm在没有内存的情况下如何执行finallyblock?输出:InFinallyExceptioninthread"main"java.lang.OutOfMemoryError:Javaheapspace 最佳答案 大概System.out.println调用比s.add("Pradeep")调用需要更少的内存。例如,如果s是一个ArrayList

java - 如何重新配置​​ eclipse 以使用 64 位 JVM

我在我认为都是64位运行时环境的环境中使用eclipse。当前设置Java>installedJREs和ExecutionEnvironment都指向jdk1.6.0_30,它是JDK的64位版本。但是,eclipse仍然认为它运行的是32位版本,因为当我运行时:System.getProperty("sun.arch.data.model");它返回32而不是64。我为64位机器编译的外部JNI资源不会链接到共享的.so文件,除非它在​​64位环境中运行。(当我尝试这样做时出现字长不匹配错误)那么如何重新配置​​eclipse以运行64位jvm。eclipse本身必须是64位版本吗?

java - 我们需要运行多少次 Java 程序来预热 JVM?

假设我有一个Java程序Test.class。我想测量它的执行时间。我写了一个包装器来执行以下操作:classRunTest{publicstaticvoidmain(String[]args){longsum=0;intiterations=20;intwarmupNum=10;for(inti=0;iwarmupNum)sum+=end-start;}System.out.println("ave:"+sum/(iterations-warmupNum));}}这里如何选择warmupNum,越大越好吗?多大才够?这是衡量Java程序性能的“标准/通用”方法吗?

java - JVM 在完全 gc 后偶尔会锁定

最近我们只是注意到我们的许多服务器偶尔和突然(没有明显的逐渐退化)锁定以下堆栈(所有其他theads被阻塞、IN_NATIVE或IN_VM)(在我们的代码开始处被截断),使用jstack获得-FThread18334:(state=IN_JAVA)-java.util.Calendar.updateTime()@bci=1,line=2469(Compiledframe;informationmaybeimprecise)-java.util.Calendar.getTimeInMillis()@bci=8,line=1088(Compiledframe)(truncated)故障似乎