草庐IT

jvm-serializers

全部标签

java - Scala 宏和 JVM 的方法大小限制

我正在用Scala宏替换Java程序中的一些代码生成组件,并且遇到了Java虚拟机对单个方法生成的字节码大小的限制(64KB)。例如,假设我们有一个很大的XML文件,它表示我们想要在程序中使用的从整数到整数的映射。我们想避免在运行时解析这个文件,所以我们将编写一个宏来在编译时进行解析并使用文件的内容来创建我们方法的主体:importscala.language.experimental.macrosimportscala.reflect.macros.ContextobjectBigMethod{//Forthissimplifiedexamplewe'lljustmakesomeda

java - 如果我使用最新的 JDK 编译 Java 文件,那么旧的 JVM 是否能够运行 .class 文件?

字节码是否依赖于创建它的Java版本? 最佳答案 IfIcompiledajavafileinthenewestJDK,wouldanolderJVMbeabletorunthe.classfiles?这取决于三件事:您正在谈论的实际Java版本。例如,1.4.0JVM可以运行由1.4.2编译器编译的代码,但1.3.xJVM不能1。使用的编译标志。有一个-target编译器标志,告诉它生成将在较旧的(目标)JVM上运行的代码。-source编译器标志告诉它只接受旧版JVM的语言特性。(这种方法并不总是有效,具体取决于您的代码使用的J

java - 运行 Java 给出 "Error: could not open ` C :\Program Files\Java\jre6\lib\amd64\jvm. cfg'"

经过多年的正常工作,我在尝试启动JVM时突然收到此消息:Error:couldnotopen`C:\ProgramFiles\Java\jre6\lib\amd64\jvm.cfg'我尝试卸载,但收到一条消息说缺少DLL(未指定)尝试重新安装,但无济于事。同时,在尝试启动Scala时,我得到:\Java\jdk1.6.0_25\bin\java.exewasunexpectedatthistime.检查%JAVA_HOME%和%path%-都OK谁能帮忙? 最佳答案 我检查了我的环境变量-JAVA_HOME&PATH,它们都指向C:

java - 如何用 Java 编写 JVM

我正在简要阅读Maxine这是一个用Java编写的开源JVM实现。这对我来说听起来很循环。如果java需要虚拟机来运行,那么虚拟机本身如何用Java编写(VM代码不会需要在其中运行的VM,等等?)。编辑:好的,所以我发现我忽略了Java不必在VM中运行的事实。那么如何解释如何用LISP编写LISP编译器呢?还是应该完全是一个新问题? 最佳答案 您一开始就认为Java需要虚拟机是不正确的。查看项目GCJ:TheGNUCompilerfortheJavaProgrammingLanguage.

java - Haskell 与 JVM 性能对比

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter寻求指导。关闭10年前。我想为一个网站编写一个后端系统(它将是一个自定义的搜索式服务)。它需要高度并发和快速。考虑到我对并发的期望,我计划使用Haskell或Scala等函数式语言。不过,速度也是重中之重。http://benchmarksgame.alioth.debian.org结果似乎表明Java几乎与C/C++一样快,Scala通常相当不错,但对于大多数任务,Has

java - Java(JVM)如何为每个线程分配堆栈

Java应用程序启动时所有线程都有一个堆。每个线程都有自己的堆栈。当一个Java应用程序启动时,我们使用JVM选项-Xms和-Xmx来控制堆的大小和-Xss控制堆栈大小。我的理解是,正在创建的堆成为JVM的“托管”内存,并且所有正在创建的对象都放置在那里。但是堆栈创建是如何工作的?Java在创建每个线程时是否为每个线程创建一个堆栈?如果是这样,堆栈在内存中的确切位置?它肯定不在“托管”堆中。JVM是从native内存创建堆栈还是为堆栈预先分配一部分托管内存区域?如果是这样,JVM如何知道线程将如何创建? 最佳答案 Javaspeci

java - 如何使用 JMX 连接到 localhost jvm 上的 java 程序?

我应该使用JMX连接到本地jvm上的java程序。换句话说,我想开发一个JMX客户端来在localhost上配置一个java程序。不推荐使用JConsole!JConsole不适合,因为它是通用的JMX客户端,对主程序性能有负面影响。oracle站点上的示例使用RMIConnector和host:port参数,但我不知道:应该在哪里设置jmx端口?JConsole可以选择通过PID连接到java进程。但是我在JMXapi中没有找到任何以PID作为输入参数的方法。 最佳答案 我们使用类似以下的方式以编程方式连接到我们的JMX服务器。您

java - 找出运行 JVM Eclipse 的设备

我目前正在尝试调整我的Eclipse安装并遇到了“-vm”选项。SO上的其他帖子提到始终使用最新的可用JVM是件好事,因为它们在性能方面不断提高,所以我可能会这样做。我想知道如果你没有指定“-vm”参数,你怎么能找到运行JVMEclipse的东西。我在文档中找到了以下内容,但这并没有说明它将如何查找JVM:whenpassedtotheEclipseexecutable,thisoptionisusedtolocatetheJavaVMtousetorunEclipse.ItmustbethefullfilesystempathtoanappropriateJavaexecutable

java - 如何在不使用配置程序的情况下调整 Tomcat 5.5 JVM 内存设置

我需要配置Tomcat内存设置作为大型安装的一部分,因此事后使用配置应用手动配置Tomcat是不可能的。我以为我可以将JVM内存设置放入JAVA_OPTS环境变量中,但我正在使用jconsole对其进行测试以查看它是否有效,但它...无效。根据下面的评论,CATALINA_OPTS也不起作用。到目前为止,我可以让它工作的唯一方法是通过Tomcat配置GUI,这不是我的问题可接受的解决方案。 最佳答案 Serhii的建议有效,这里有更多细节。如果您查看安装的bin目录,您将看到catalina.sh或.bat脚本。如果您查看这些内容,

java - JVM 可以在不重新启动的情况下从 OutOfMemoryError 中恢复吗

如果JVM有机会在更多对象分配请求到来之前运行GC,它是否可以在不重新启动的情况下从OutOfMemoryError中恢复?不同的JVM实现在这方面有什么不同吗?我的问题是关于JVM恢复,而不是用户程序试图通过捕获错误来恢复。换句话说,如果在应用程序服务器(jboss/websphere/..)中抛出OOME,我是否必须重新启动它?或者,如果进一步的请求似乎没有问题,我可以让它运行吗? 最佳答案 它可能有效,但通常是个坏主意。无法保证您的应用程序将成功恢复,或者它会知道它是否没有成功。例如:确实可能没有足够的内存来执行请求的任务,即