Tag: jvm

我们可以在硬件中实现一个java解释器本地执行Java字节码吗?

如果我们在硬件中实现java解释器那么我们如何实现java字节码的架构中立性… java是否使用JIT(只是在时间解释器中)? 以及这些与虚拟机概念的操作系统和java虚拟机(JVM)有何关系

在eclipse中设置JVM参数的正确方法是什么

我正在使用eclipse 4.2来执行junit测试。 测试使用了大量的内存,所以我想做的是扩大分配给jvm的内存。 我想知道在eclipse ini文件中设置堆内存参数和运行配置之间是否存在差异?

哪种语言(在JVM上运行)最适合创建DSL?

我们需要创建复杂的固定长度和可变长度的字符串。 这些字符串可能代表客户档案,订单等。您建议使用哪种基于JVM的编程语言? 想法是让最终用户使用此DSL创建字符串。 所以我正在寻找validation,代码完成等。

如何在OutOfMemoryError _after_上进行堆转储时重新启动JVM?

我知道-XX:+HeapDumpOnOutOfMemoryError JVM参数。 我也知道-XX:OnOutOfMemoryError=”cmd args;cmd args”并且kill -3 将请求堆转储。 问题:如何确保在OutOfMemoryError首先进行完全堆转储, 然后在转储完成后强制重启(或终止)? 是我最好的选择-XX:OnOutOfMemoryError=”kill -3 %p;sleep ;kill -9 %p” ?

validation,方法执行和JIT编译过程中类加载的原因和跟踪

我试图在非常详细的基础上理解哪些事件导致类加载,并且在我的测试期间遇到了一个我在这个非常基本的示例中无法理解的行为: public class ClinitTest { public static Integer num; public static Long NUMTEST; static { NUMTEST = new Long(15);; num = (int) (NUMTEST * 5); System.out.println(num); } public static void main(String[] args) { System.out.println( “The number is ” + num); } } 在执行时运行java.lang.Long时。 好吧,它先前由bootstrap类加载器加载,但此时调用了AppClassloader,因为它尚未注册为启动类加载器。 因此,LauncherHelper将获取应用程序类,在它调用main方法之前,JVM将确保该类已初始化。 在执行期间,会发生此类加载。 在另一个运行中,我使用Java代理将重命名为其他内容并添加一个空代理。 我的期望是 – 由于原来的代码没有被执行,我也不会得到类加载事件。 奇怪的是,此时java.lang.Long的负载似乎发生在更早的时间。 在我的跟踪中,我看到当LauncherHelper尝试validation主类时会触发它。 在这里,它尝试通过reflection获取main方法,并且在引擎盖下调用java.lang.Class.getDeclaredMethods0()会导致调用AppClassLoader请求java.lang.Long 。 所以问题是: […]

JVM内存:为什么任务管理器上的内存与JProbe(或JConsole工具)不同

我遇到的问题是我的应用程序使用的内存只有100MB,之后它减少了50MB,但是在Window Task Manager上显示150MB并且始终保持或增加但不减少,我们如何减少任务管理器上的内存(私有工作集)?

什么基于JVM的脚本语言支持@WebService在运行时创建服务?

我处于这样一种情况,我需要能够在运行时创建和公开Web服务。 (即没有“javac” – 编译步骤)。 是否有基于JVM的脚本语言对JAX-WS有很好的支持,因此我可以用Java编写中央引擎,然后让脚本语言创建包含Web服务方法的片段(使用@WebService或@WebMethod注释) )然后可以传递给 http://docs.oracle.com/javase/6/docs/api/javax/xml/ws/Endpoint.html#publish(java.lang.String,java.lang.Object) 如果可能的话,请提供一个如何正确执行此操作的示例。 有什么建议么?

Java类文件上的ACC_SUPER访问标志的目的是什么?

invokespecial JVM指令用于在创建新对象时调用初始化方法( )。 该指令的描述建议(但不澄清)关于是否调用超类的构造函数或当前类的构造函数的决定取决于class文件中设置的ACC_SUPER标志的状态。 来自Sun JVM规范: 接下来,选择已解析的方法进行调用,除非满足以下所有条件: 为当前类设置ACC_SUPER标志(参见表4.1“类访问和属性修饰符”)。 – Source ( invokespecial opcode definition) ACC_SUPER标志的设置指示Java虚拟机要表达的其invokespecial指令的两个备选语义中的哪一个; 存在ACC_SUPER标志,以便向后兼容Sun的旧编译器为Java编程语言编译的代码。 Java虚拟机的所有新实现都应该实现本规范中记录的invokespecial的语义。 Java虚拟机指令集的所有新编译器都应设置ACC_SUPER标志。 Sun的旧编译器生成了Class_Sile标志,并且未设置ACC_SUPER。 Sun的旧Java虚拟机实现会在设置时忽略该标志。 – 来源 ( ClassFile格式) 该定义指出该标志是为了与旧编译器向后兼容。 然而,它继续与Sun’s older Java virtual machine implementations ignore the flag if it is set.相矛盾, Sun’s older Java virtual machine implementations ignore the flag if it is set. 该标志是否仍与invokespecial操作码一起使用? 从我所知,它似乎没有任何目的,我找不到建议它曾经做过的资源。 谢谢。

部署WAR还是“胖”JAR?

我注意到许多项目(DropWizard,Grails等)开始接受“胖”JAR(使用嵌入式Web服务器,如Jetty或Tomcat)与传统WAR部署的概念。 这两种方法都涉及单个JVM进程(即无论将多少WAR部署到Tomcat,它都是相同的JVM进程)。 在什么情况下,哪种部署方法优于另一种?

JVM的function/不可变数据结构?

有没有人知道Java / JVM数据结构库提供熟悉的Java数据结构的function(也就是function意义上的不可变或“持久”)等价物? “function”是指对象本身是不可变的,而对这些对象的修改会返回与父对象在适当位置共享相同内部的新对象(为了提高时间和空间的效率;一个天真的实现可以复制整个事物每写一次)。 就像Java的并发库一样,这似乎不是我能够或应该自己实现的东西,所以拥有一个我可以在JVM中使用的function数据结构库会更好。