草庐IT

Cucumber-JVM

全部标签

Java Lambda : How it works in JVM & is it OOP?

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion例如,在匿名内部类的情况下,传递(匿名)对象引用并执行该对象的方法。Lambda是在需要时执行的代码块。当遇到lambda时,JVM会发生什么?JVM将lambdas相关的代码块存放在哪里(Heap:Young,OldorPermanentGeneration)?我尝试搜索,我得到了使用lambdas的语法,但无法理解JVM内部发生了什么,因为在JAVA中一切都是基于对象的。那么在OOP的上下文中,la

java - 什么是 JVM -server 参数?

我在http://shootout.alioth.debian.org/中看到了Java服务器用于编程语言基准。我知道-server是运行JVM的参数。我想知道:我们什么时候使用-server参数,它是如何工作的?我们可以在java桌面应用程序中使用这个参数吗?谢谢。 最佳答案 它只是选择“服务器热点虚拟机”。见documentation(Solaris/Linux)对于java。根据维基百科:Sun'sJREfeatures2virtualmachines,onecalledClientandtheotherServer.TheC

eclipse - JDK/JRE/JVM/Java SDK |它们都是什么意思?有时你可以用 JRE 开发,有时你需要 JDK?

说实话,我对所有这些术语(JDK/JRE/JavaSDK)都很困惑。我不确定每个人的作用。当我第一次开始在eclipse中做简单的java示例时,我很确定我只有JRE,我相信这是普通用户用来在他们的系统上运行java程序/小程序的默认java安装程序。但是,现在在类里面我们使用的是GoogleAppengine,这需要我猜想与JavaSDK相同的JDK。在浪费了一些时间后发现安装JDK意味着我还必须将java/bin添加到环境变量中以使javac-version在命令提示符下工作,我发现只有JDK具有javac...我早期的java程序在没有安装JDK并因此没有javac的情况下如何工

java - Java JVM中的指令重新排序

我正在阅读this博文。而作者说的是在多线程环境下打破String中的hashCode()。通过拥有:publicinthashCode(){inth=hash;if(h==0){intoff=offset;charval[]=value;intlen=count;for(inti=0;i改为:publicinthashCode(){if(hash==0){intoff=offset;charval[]=value;intlen=count;inth=0;for(inti=0;i作者所说,我引用:"WhatI'vedonehereistoaddanadditionalread:thes

java - java.exe、javaw.exe和jvm.dll的区别

使用java.exe、javaw.exe和jvm.dll运行应用程序(例如Eclipse)有什么区别?另外,它在性能方面有什么不同吗? 最佳答案 jvm.dll是JVM的实际Windows实现(或者更好的是,主入口点)。C或C++应用程序可以使用此DLL来运行嵌入式Java运行时,这将允许应用程序直接与JVM交互,例如如果他们想使用Java作为其GUI。java.exe是DLL的包装器,因此人们可以在不需要自定义启动器应用程序的情况下实际运行Java类。它是一个Win32控制台应用程序,因此如果exe不是从批处理文件运行,Windo

java - JVM 版本管理器

有没有RubyVersionManager等同于Java世界?我正在寻找可以让我轻松下载和安装新JVM并在它们之间切换的工具。例如:jvminstalljvmlist//willlistinstalledJVMsonmysystemjvmusejdk1.6//willswitchmyenvtojdk1.6version,etc. 最佳答案 http://www.jenv.be/将允许这种类型的控制。 关于java-JVM版本管理器,我们在StackOverflow上找到一个类似的问题:

java - 如果 JIT 正在执行字节码转换为机器指令,那么 JVM 有什么用

我真的很难理解以下内容以前我知道:编译Java程序时会生成.class文件。在那个代码中是字节的形式。然后JVM会将该字节码翻译成机器可以理解的格式。现在我看到oneofthequestionsinSOAJust-In-Time(JIT)compilerisafeatureoftherun-timeinterpreter,thatinsteadofinterpretingbytecodeeverytimeamethodisinvoked,willcompilethebytecodeintothemachinecodeinstructionsoftherunningmachine所以这里

java - 我可以强制 JVM 本地编译给定的方法吗?

我的应用启动时经常调用一个对性能至关重要的方法。最终,它会被JIT编译,但不是在解释器中运行一段时间之后。有什么方法可以告诉JVM我希望从一开始就编译此方法(无需使用-XX:CompileThreshold之类的东西调整其他内部结构)? 最佳答案 我知道的唯一方法是-Xcomp标志,但通常不建议使用。它会在所有类和方法第一次运行时强制它们立即进行JIT编译。缺点是您会在初始启动时看到性能下降(由于JITActivity增加)。此标志的另一个主要限制是它似乎禁用了JIT通常会执行的基于增量分析的优化。在标准混合模式下,JIT编译器可以

java - 方法中未使用的局部变量是否会在 JVM 中获取内存?

我在SODouninitializedprimitiveinstancevariablesusememory?中看到了这篇文章它指出“在Java中,声明一个类级别的实例变量而不初始化它是否需要内存?例如:inti;如果我不使用i=5初始化它,请使用任何内存;?”我的问题是,如果是局部变量,比如说我有一个方法foo()publicintfoo(){intx;//Writecodewhichdoesnotuse/initializex}局部变量x会不会占用内存?编辑乔恩的答案是更新:对此进行更多研究,我发现这个页面向我表明,尽管编译后的字节码暗示空间是为x分配的,但它确实可能被jvm优化掉

java - 两台机器之间的 JVM 堆复制

连接在同一个网络中运行同一个Java应用程序的两台可分离计算机如何通过在彼此之间同步它们的堆来保持相同状态的基本原则是什么?我相信Terracotta完成这项任务,但我不知道某些伪代码将如何描述其核心功能。我只是想了解这项技术。 最佳答案 TerracottaDSO通过操作类(以及JDK的类等)的字节码来工作。关于如何以及何时执行此操作的说明是Terracotta配置文件的一部分。字节码修改查找某些字节码,例如字段读取或写入或监视器进入或退出。每当出现这些指令时,就会在该位置周围添加代码,以在分布式存储中执行适当的操作。比如同步获取