注意:此问题来自2014年.从Java 11开始,OpenJDK和Oracle JDK正在融合.
Oracle和OpenJDK之间是否存在重大差异?
例如,垃圾收集和其他JVM参数是否相同?
GC在两者之间的工作方式不同吗?
当我想开始学习Java时,我应该安装哪一个?我将从一些基础开始,所以我将编写简单的程序来创建文件,目录,编辑XML文件等等,现在没有什么太复杂了.
我想我应该在Windows 7桌面上安装Java SE(标准版).我已经有了Komodo IDE,我将用它来编写Java代码.
我看到许多不同的Java术语浮出水面.我需要安装JDK 1.6.据我所知,Java 6 == Java 1.6.但是,当我安装Java SE 6时,我得到一个报告为11.0版本的JVM!谁能解决这个疯狂?
我只想控制Java(groovy)应用程序中所有线程的堆栈大小.对于Hotspot Oracle VM,我知道有两个参数(-Xss和XX:ThreadStackSize).
哪个是首选?它们之间有什么区别吗?关于Open JDK 7,有人在邮件列表中询问,说明-XssHotpot VM与之相同-XX:ThreadStackSize.
关键是,我正在测量可以在我的系统上启动多少个线程.我的groovy脚本执行此操作看起来像:
int count = 0
def printCountThreads = {
println("XXX There were started $count threads.")
}
try {
while(true){
new Thread({Thread.sleep(Integer.MAX_VALUE)}).start()
count++
if(count % 1000 == 0){
printCountThreads()
}
}
} catch (Throwable e){
printCountThreads()
throw e
}
Run Code Online (Sandbox Code Playgroud)
有趣的是,我只是使用 - 减少了一些线程XX:ThreadStackSize.我正在使用环境变量JAVA_OPTS中的不同内容启动groovy应用程序.
groovy countmax-threads.groovy
Run Code Online (Sandbox Code Playgroud)
当我将JAVA_OPTS设置为时-XX:ThreadStackSize=2m,我会获得大约1000个启动线程,直到消耗内存为止.但是,当我使用时JAVA_OPTS='-Xss2m',我会得到大约32000个线程,直到出现预期的错误.所以它似乎-Xss根本不起作用.
我在用
java版"1.8.0_05"
Java(TM)SE运行时环境(版本1.8.0_05-b13)
Java HotSpot(TM)64位服务器VM(版本25.5-b02,混合模式)
在具有四个硬件线程和大约8 GB RAM的Ubuntu 14.04 64位计算机上.
更新: …
我有Oracle JDK7(JavaSE Hotspot Embedded JRE)和OpenJDK7(Cacao,JamVM,ZeroVM).平台是:PPC32嵌入式平台(e550)
我用两个java运行简单的素数java应用程序.由于coclusion Oracle JRE比使用cacao或jamvm或零VM的open jdk快得多.
我希望用openjdk提高执行速度.需要与oracle JRE相同的执行时间.如何提高java应用程序(单线程或多线程)的执行速度.
哪些是Oracle和Open JDK中不同的组件.
它们都在我的ubuntu机器上的/ usr/lib/jvm/..文件中.有人可以解释这4个文件之间的差异以及为什么名为java1.8.0_91的文件不被视为JDK?我在为android studio找到JDK时遇到了这些文件.
有人可以澄清为什么ADT的Eclipse(http://developer.android.com/sdk/index.html)无法启动吗?
每次我收到此错误:
---------------------------
Eclipse
---------------------------
Java was started but returned exit code=13
C:\Program Files (x86)\Java\jre7\bin\javaw.exe
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx768m
-Declipse.buildId=v22.0.5-757759
-XX:MaxPermSize=256m
-jar C:\Users\Alexey\Desktop\tmp\adt-bundle-windows-x86_64-20130729\adt-bundle-windows-x86_64-20130729\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
-os win32
-ws win32
-arch x86_64
-showsplash
-launcher C:\Users\Alexey\Desktop\tmp\adt-bundle-windows-x86_64-20130729\adt-bundle-windows-x86_64-20130729\eclipse\eclipse.exe
-name Eclipse
--launcher.library C:\Users\Alexey\Desktop\tmp\adt-bundle-windows-x86_64-20130729\adt-bundle-windows-x86_64-20130729\eclipse\\plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-144807\eclipse_1503.dll
-startup C:\Users\Alexey\Desktop\tmp\adt-bundle-windows-x86_64-20130729\adt-bundle-windows-x86_64-20130729\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.overrideVmargs
-exitdata bec_34
-product com.android.ide.eclipse.adt.package.product
-vm C:\Program Files (x86)\Java\jre7\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx768m
-Declipse.buildId=v22.0.5-757759
-XX:MaxPermSize=256m
-jar C:\Users\Alexey\Desktop\tmp\adt-bundle-windows-x86_64-20130729\adt-bundle-windows-x86_64-20130729\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
---------------------------
OK
---------------------------
Run Code Online (Sandbox Code Playgroud) 我最近开始学习JAVA.我的老师告诉我,JVM的名称Virtual基本上不是以物理或软件(或你说的任何东西)的形式存在.根据他的说法,JVM只是为不同平台开发JRE的规范文档.JRE是JVM的真正实现,它完成了运行Bytecode等所有工作.
我自己做了一些搜索,但在任何地方找不到相同的东西.相反,很多人说JVM用于运行字节码,JRE提供运行时间.这非常令人不满意.
所以我想知道JVM和JRE之间的区别是什么.如果有一些来自oracle或sun microsystem的真实文档.然后提供链接
我想知道官方Java核心API是JDK还是JRE的一部分。
根据对Java的理解,我认为核心API应该是JRE的一部分,因为该应用程序应该可以在没有JDK提供的附加功能的情况下运行。
我还在网上找到了一些信息,说JDK的3个基本组件是:
(由于JRE是JVM的实现,因此Java API属于JRE还是JDK?)
编辑:实际问题:Java API是否包含在JRE中?
java ×11
jvm ×3
java-8 ×2
adt ×1
android ×1
difference ×1
eclipse ×1
eclipse-adt ×1
java-api ×1
java-ee ×1
java-me ×1
jvm-hotspot ×1
openjdk ×1
oracle ×1
performance ×1