草庐IT

JVM指令手册

全部标签

java - 最高效 - 性能明智 - 用于 JVM 间通信

我有一个Java应用程序需要不同进程之间的通信。进程可以运行在相同的JVM或不同的JVM中,但运行在同一台机器上。我的应用程序需要向另一个进程(相同或不同的JVM)提交“消息”,但忘记了它。类似于IBM“MQ”之类的消息队列,但是简单,并且只使用内存,没有硬盘的IO以提高性能。我不确定性能规范的最佳方法是什么。我想知道RMI在性能方面是否高效,我认为它需要一些开销。使用本地主机的TCP/IP套接字怎么样?还有什么想法吗? 最佳答案 IwonderifRMIisefficientintermsofPerformance,Ithinki

java - 如果使用的 JVM 是 x86 或 x64,如何以不同方式解决 Maven 依赖项?

我有一个Maven存储库设置来托管一些dll,但我需要我的Maven项目根据使用的JVM是x86还是x64下载不同的dll。例如,在运行x86版本JVM的计算机上,我需要从存储库下载ABC.dll作为依赖项,但在另一台运行x64版本JVM的计算机上,我需要下载XYZ。dll代替。我该怎么做呢?一个示例pom.xml文件会很好。 最佳答案 这适用于任何虚拟机。您可以使用profiles根据环境有不同的配置。配置文件包含一个激活block,它描述了何时使配置文件处于Activity状态,后跟通常的pom元素,例如依赖项:x86x64正如

java - 如何确保我使用的是 "server"JVM?

Sun的JVM有两种类型:-client和-server,其中ServerVM应该针对长时间运行的进程进行了优化,推荐用于服务器应用程序.当我不带参数运行java时,它会显示使用选项,其中包括以下文本:ThedefaultVMisserver,becauseyouarerunningonaserver-classmachine.看到这里,懒得在进程启动命令中加入-server但是,在最近的JVM崩溃日志中,我注意到文件末尾附近有以下行:vm_info:JavaHotSpot(TM)ClientVM(14.0-b16)forlinux-x86JRE(1.6.0_14-b08),built

java - 重新编译包含 goto 指令的反编译 Java (JD/JAD) 源代码

(相关问题:JavacompilersorJVMlanguagesthatsupportgoto?)我已经反编译了一个jar(合法地,用于调试目的)并想重新编译它。我都用过JAD和JD由于goto指令,两者都无法编译例如goto_L1...L1:returntrue;有没有简单的方法(或任何方法)重新编译它?(除了手动重构和删除goto的) 最佳答案 不,没有。在您的情况下,JD和JAD都无法正确反编译类文件。“goto”语句是关于实际程序流程的提示。你可以直接联系JavaDecompiler团队,发一个class文件反编译出来的源

java - 为什么 JVM 不会在引用计数为 0 时立即销毁资源?

我一直想知道为什么Java中的垃圾收集器会在需要时激活而不是在执行时激活:if(obj.refCount==0){deleteobj;}Java的工作方式是否有我忽略的任何重大优势?谢谢 最佳答案 每个JVM都是不同的,但HotSpotJVM并不主要依赖引用计数作为垃圾收集的手段。引用计数的优点是易于实现,但它天生就容易出错。特别是,如果您有一个引用循环(一组对象在一个循环中相互引用),那么引用计数将无法正确回收这些对象,因为它们都具有非零引用计数。这迫使您不时使用辅助垃圾收集器,这往往会更慢(MozillaFirefox有这个确切

java - 您在 Java 世界(JVM 上的脚本语言)中首选的脚本语言是什么?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。您在Java世界(JVM上的脚本语言)中首选的脚本语言是什么?您什么时候更喜欢脚本语言而不是Java(例如在什么情况下进行原型(prototype)设计)?您是将它用于大型项目还是仅用于个人项目?

java - 如何使用 Java 以编程方式安装所有 Java JVM(不是默认的)?

有谁知道如何使用Java以编程方式安装所有JVM(不是默认的)?比如某用户机器上安装了2个JVM:JDK5JDK6我需要知道安装的所有版本,以便切换正在使用的版本(默认情况下),然后以编程方式调用javac以使用特定JDK版本编译一些源代码。我一直在网上寻找一些信息,我发现:HowtoprogramaticallygetaJavaversion(Notdefaultone)?HowdoIprogramaticallygetthepathtothejdk/javac?但我找不到我要找的东西。 最佳答案 我最近处理了一个非常相似的情况。

java - 设置 JVM 以在抛出 OutOfMemoryError 时转储堆

我正在尝试设置我正在使用的服务器的JVM,因此它会在发生OOME时将堆转储到文件中。我知道我必须将此选项-XX:-HeapDumpOnOutOfMemoryError添加到某处的JVM参数,但我不知道该怎么做。仅供引用,我可以通过PuTTY访问服务器,所以我正在寻找执行此操作的命令行方式。我使用的JVM是OpenJDK64位服务器VM。我不知道这是否相关,但该应用程序是一个war文件。PS:ps-ef|grepjavatomcat2383710Mar25?00:03:46/usr/lib/jvm/jre/bin/java-classpath:/usr/share/tomcat6/bin

java - JVM 如何区分 Scala 字节码和 Java 字节码?

因为Scala也生成字节码并由JVM执行。我想知道JVM如何区分Scala字节码和Java字节码。谁能解释一下?ScalacMyprogram.scalajavaMyprogram所以这个陈述完全没问题? 最佳答案 IamwonderingHowJVMdistinguishbetweenScalabytecodeandJavabytecode.事实并非如此。没有Scala字节码这样的东西。Scala编译器编译成JVM字节码。就像Java编译器也编译成JVM字节码一样。JVM对Scala一无所知。它对Java也一无所知。它也不了解Gr

java - 增加可用内核和 RAM 的数量是否会导致 JVM 执行更多的 GC?

我正在升级生产硬件,我们发现与旧套件相比,新套件上的新生代GC数量要多得多。相同的程序(相同的二进制文件)在两台机器上运行。一个明显的区别(我希望这不会对JVM产生影响)是我们升级了RHEL5->RHEL6。我们的JVM(Java64位Hotspot1.6,两者上的java-version相同)使用相同的命令行GC选项运行:-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+UseParallelGC-XX:+UseCompressedOops还有:-Xmx1024M-Xms1024M-XX:NewSize=512M-XX