草庐IT

java - 64 位 Java VM 运行应用程序速度慢 10 倍

我有一个使用JarBundler打包的Java应用程序。该应用程序占用大量CPU(大量大型Collection.sort()调用)。在MacOS上,当使用64位JavaApplicationStub时,应用程序运行缓慢。此JavaApplicationStub文件正在启动Java64位VM。我发现了一个仅32位的旧JavaApplicationStub文件。我在Bundle中替换了它,应用程序运行速度提高了10倍!(因此,应用程序运行时会使用32位VM)。这有什么意义吗?为什么64位VM这么慢?像这样构建应用程序并破解JavaApplicationStub文件是否有意义?不胜感激。

java - 从 Sun JVM 过渡到 JRockit 时需要注意的注意事项?

我们正在考虑将一个大型产品从依赖Sun的JVM过渡到JRockit。我还没有天真到相信这会是一个平稳的过渡(尽管我宁愿错了)。我们应该注意或重点关注哪些问题进行回归测试? 最佳答案 好吧,你当然有单元测试,对吗?:-)我使用JRockit只是为了“好玩”,从来没有遇到过问题。据我所见,它被用于许多种类繁多的应用程序中,因此它应该可以正常工作。好像也通过了JCK(Sun的兼容性测试),应该是顺利的。我认为要打破的领域是:垃圾收集器native代码(JNI)文件系统处理、线程等...(除非他们使用Sun库代码)文件系统、线程等...都是

java - JVM 基准测试应用程序

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion我们想要比较不同JVM在不同环境(Windows、Solaris等)中相同Java版本(1.5)的一般性能(CPU、I/O、网络等)。您是否知道可用于比较来自不同JVM的结果的任何JVM基准测试应用程序?非常感谢。

java - 识别未被垃圾收集的对象的更好方法?

一言以蔽之我有一个程序随着时间的推移逐渐使用越来越多的内存。我正在使用jmap和jhat来尝试诊断它,但还不够准确。背景该程序是一个长期运行的服务器,由hbase数据存储支持,为其他一些东西提供节俭服务。然而,在运行几天后,它最终会达到分配的堆限制,并且几乎所有时间都花在垃圾收集上来回Swing。似乎在某处保存了大量数据的引用到目前为止我做了什么在摆弄jstat和jconsole之后,我最终使用运行进程的jmap进行堆转储,并通过jhat运行它,简单的数字加起来没有接近内存利用率jmap-F-dump:live,format=b,file=heap.dump12765jmap-F-du

java - 开发javaagents时如何运行测试?

我正在尝试摆弄Foursquare'sHeapAudit,并尝试使用IntelliJIDEA进行设置。使用pom.xml中的依赖项,我设法让它构建得很好。但是,当我实际尝试运行JUnit测试时,基本上所有测试都失败了。我猜这是因为使用HeapAudit需要JVM作为-javaagent启动,根据github:$java-javaagent:heapaudit.jarMyTest如果我放入此行并引用我之前下载/构建的heapaudit.jar,大概测试会通过。但是,在我看来,如果我更改源代码,我将需要重新打包这个愚蠢的.jar文件以查看它是否有效。是否有任何方法可以使用-javaagen

java - Heroku JVM 调优

我在Heroku的Play2框架上编写了一个应用程序,但遇到内存问题。2013-03-21T01:28:35+00:00heroku[web.1]:Processrunningmem=543M(106.1%)2013-03-21T01:28:35+00:00heroku[web.1]:ErrorR14(Memoryquotaexceeded)在本地,我在Heroku(512MB)上使用相同的JVM设置和内存限制对其进行了分析,但当我在Heroku上发送请求时,它几乎立即运行了我们的堆空间。JAVA_OPTS:-Xmx384m-Xss512k-XX:+UseCompressedOops如

java - 为什么 getSum 没有被热点 jvm 内联?

这是我试图从JavaPerformance:TheDefinitiveGuide,Page97重现的示例关于逃逸分析的主题。这可能是应该发生的事情:getSum()必须足够热,并且必须使用适当的JVM参数将其内联到调用方main()中。因为list和sum变量都没有从main()方法中逃逸,所以它们可以被标记为NoEscape因此JVM可以为它们使用堆栈分配而不是堆分配。但我跑遍了jitwatch结果显示getSum()编译成本地程序集,但没有内联到main()中。更不用说因此堆栈分配也没有发生。我在这里做错了什么?(我把整个代码和热点日志都放在了here。)代码如下:importja

java - 如何理解 Java 热点错误

伙计们,当JVM崩溃时,它会写入一个错误日志hs_err_pid.log。我想找出导致JVM崩溃的原因?如何理解这些日志,是否在任何地方记录了该日志的排列方式。我试图在网上搜索但无济于事:-(指出相关URL将不胜感激。谢谢。 最佳答案 除非您正在调用native代码(JNI),否则您的代码中的任何内容都不应该导致JVM崩溃;因此,该日志文件中的堆栈跟踪信息可能对大多数开发人员来说并不是很有用。这可能就是为什么它可能没有被记录(至少在外部)。因此,最好的办法可能是按照错误消息的建议提交错误报告。但是,如果你真的想了解它,Kohsuke

java - 为什么 GC 时间在长时间运行的高容量 Java 应用程序上稳步增加?

我有一个大容量Java应用程序,它处理50000条消息/秒的一致负载。它使用以下设置针对高吞吐量进行了调整:我发现年轻的GC时间从开始时的50毫秒稳步上升到一天结束时的200毫秒,尽管GC运行的频率保持不变。如果我使用ParNewGC收集器尝试相同的运行,GC时间会以更快的速度增加。有没有人对这个问题有任何想法? 最佳答案 如果您有内存泄漏,或者内存中的缓存逐渐使用越来越多的内存,这些都会导致GC做更多的工作来跟踪可访问的对象。其他可能性是:您有非堆内存泄漏,这会导致分页增加;即,将物理内存页面复制到磁盘并返回。一些外部进程正在消耗

java - 已接受 XX :UseSSE values for Java JVM?

我想比较一个应用程序在多个SSE版本中的性能,但无法找到此JVM标志接受的值。我正在测试0、1、3和4。我最不确定4是否被接受(我见过的所有示例最多为3)和/或它的变体(4.1-4.3)是否可以明确定义.有人对此有任何进一步的信息吗? 最佳答案 使用来源;)http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/39d920531a4d/src/cpu/x86/vm/vm_version_x86.cpp#l464if(UseSSE请注意,证明JVM在某种程度上了解SSE,它可能不会为新