Tag: jvm

为什么Java虚拟机中没有GIL? 为什么Python需要一个如此糟糕的?

我希望有人能够提供一些洞察力,认为Java虚拟机有什么根本的不同,它允许它在不需要全局解释器锁(GIL)的情况下很好地实现线程,而Python则需要这样一个邪恶的东西。

在JDK 8中删除PermGen

我已经安装了JDK 8并尝试运行Eclipse。 我收到以下警告消息: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0 忽略这个论点的原因是什么?

-XX:MaxPermSize是做什么的?

具体来说,为什么它会帮助修复PermGen OutOfMemoryError问题? 此外,回答的奖励点,指向JVM参数的文档…

什么实际上导致堆栈溢出错误?

我到处寻找,找不到一个坚实的答案。 根据文档,Java在下列情况下抛出java.lang.StackOverflowError错误: 由于应用程序recursion太深而发生堆栈溢出时抛出。 但是这提出了两个问题: 没有其他的方式来发生堆栈溢出,不仅通过recursion? 在JVM实际溢出堆栈之前或之后,StackOverflowError是否发生? 详细解释第二个问题: 当Java抛出StackOverflowError时,你能否安全地认为堆栈没有写入堆中? 如果你缩小了堆栈的大小,或者堆栈溢出的函数的try / catch,你可以继续工作吗? 这是logging在任何地方? 解决scheme我不是在找: 一个StackOverflow发生,因为recursion不好。 StackOverflow在堆满足堆栈时发生。

JVM,JDK,JRE和OpenJDK有什么区别?

JVM , JDK , JRE和OpenJDK有什么区别? 我在Java编程,遇到这些短语,它们之间有什么区别?

Java JIT在运行JDK代码时是否作弊?

我正在对一些代码进行基准testing,即使使用完全相同的algorithm,我也无法使它像java.math.BigInteger一样快速运行。 所以我复制java.math.BigInteger源到我自己的包,并试图这样做: //import java.math.BigInteger; public class MultiplyTest { public static void main(String[] args) { Random r = new Random(1); long tm = 0, count = 0,result=0; for (int i = 0; i < 400000; i++) { int s1 = 400, s2 = 400; BigInteger a = new BigInteger(s1 * 8, r), b = new BigInteger(s2 […]

将JVM / JRE设置为自动使用Windows代理

我看到了有关为JVM设置代理的问题,但是我想问的是如何使用已经configuration的代理(在Windows上)。 这是我的问题的一个示范: 转到您的控制面板 – > Java并设置一个代理地址。 运行以下简单的小程序代码(我正在使用Eclipse IDE): import java.awt.Graphics; import javax.swing.JApplet; import java.util.*; public class Stacklet extends JApplet { private String message; public void init(){ Properties props = System.getProperties(); message = props.getProperty("http.proxyHost", "NONE"); message = (message.length() == 0)? "NONE": message; } public void paint(Graphics g) { g.drawString(message, 20, 20); } } Applet显示“NONE”而不考虑您在Java控制面板中的设置。 如果Windows代理设置(通常在Internet Explorer中设置)是我可以确定的,但是在Java控制面板中执行额外的configuration步骤仍然是可以接受的解决scheme,那么最好是什么。 […]

如何为Junitunit testing设置JVM参数?

我有一些需要大量堆空间运行的Junitunit testing – 例如1G。 (他们testing的webstart应用程序的内存密集型function只能运行足够的堆空间,并将在Win 7 64位机器上运行,因此重新devisetesting并不是一个实际的build议。) 我正在开发Intellij IDEA,所以我知道我可以为testing类设置JVM参数(例如-Xmx1024M)。 然而,这只是运行整个testing类 – 如果我想运行一个单独的testing,我必须重新创build该testing方法的运行configuration。 另外,这些都是IDE和盒子特定的 – 所以如果我切换盒子(我在多台机器上开发)或者我的一个同事试图运行testing,那些设置不会被传输。 (另外,我的同事也使用Eclipse和NetBeans等其他IDE。)FWIW,我们使用mercurial进行源代码控制。 对于构build周期,我们使用Maven,所以我知道如何为它指定JVM参数。 所以: – 我正在寻找一种方法来指定适用于整个testing类和单个testing方法的JVM参数; 并且 – 我想在任何机器上的IDE上分享这些规范(从存储库中获取代码)。

阅读和显示Java .class版本的工具

你们有没有人知道一个工具,将search.class文件,然后显示他们的编译版本? 我知道你可以单独在hex编辑器中查看它们,但是我有许多类文件可以查看(由于某种原因,我的巨大应用程序正在编译为Java6)。

为什么不JVM编译代码的JVMcaching?

Sun的规范JVM实现将一些非常复杂的优化应用于字节码,以在代码运行几次之后获得接近本地的执行速度。 问题是,为什么这个编译后的代码不能被caching到磁盘上,以便在以后使用同一个函数/类时使用呢? 就目前而言,每次执行程序时,JIT编译器都会重新启动,而不是使用预编译版本的代码。 当字节码基本上被解释时,不会添加这个function会大大增加程序的初始运行时间?