7得票3回答
在JVM应用程序中有许多线程是昂贵的吗?

我正在学习Scala中的actors。书中推荐使用react方法而不是receive方法,因为它可以让系统使用更少的线程。 我已经阅读了为什么创建线程很昂贵。但是,一旦你有了线程(在Scala的actor系统初始化后应该保持这种状态),它们存在的原因是否很昂贵呢? 主要是内存消耗吗?还是有...

98得票5回答
为什么JVM仍不支持尾调用优化?

在JVM中是否有防止尾调用优化两年后,似乎已经有原型 实现,而且MLVM已经将该特性列为“proto 80%”一段时间了。 难道Sun / Oracle方面没有支持尾调用的积极兴趣,还是仅仅因为尾调用被“[...]注定在每个特性优先级列表上都排名第二 [...]”,如JVM Language...

45得票1回答
验证错误:后向分支存在未初始化的对象 / JVM规范4.10.2.4

JVM规范4.10.2.4第7版的最后一段指出: 有效的指令序列在反向分支的目标处不能有未初始化的对象存在于操作数栈或本地变量中,如果该未初始化对象的特殊类型与其他特殊类型合并,则不符合要求。 以下是一个被验证器拒绝的例子 - 我认为它应该被接受:public scala.Tupl...

20得票4回答
方法区和永久代

我试图理解HotSpot JVM的内存结构,但在两个术语“Method Area”和“PermGen”空间上产生了混淆。我参考的文档说Method Area包含类和方法的定义,包括字节码。其他一些文档说它们存储在PermGen空间中。 那么,我能否得出这两个内存区域是相同的结论?

40得票8回答
Java中的内联化

在C++中,我可以声明一个方法为"inline",编译器可能会将其内联。据我所知,在Java中没有这样的关键字。 如果JVM决定这样做,就会进行内联处理吗?我能以某种方式影响这个决定吗?

9得票5回答
Java中的超级是如何实现的?

“super”在哪里被定义?[当我们使用super.someMethod()时]。它是定义在java.lang.Object类或java.lang.Class类的字段中吗? 当我们从子类调用时,super包含对其超类的引用。同样,超类本身的super具有对其超类的引用[以此类推,直到java...

22得票1回答
老年代堆已满,伊甸园区和幸存者区域空间不足且几乎为空。

最近一个生产环境变得非常缓慢。进程的CPU占用率达到了200%。但进程仍在不断工作。在我重启服务后,它恢复了正常。我有几个症状: Par Survivor空间堆长时间为空,垃圾收集占用了约20%的CPU时间。 JVM选项:X:+CMSParallelRemarkEnabled, -X...

25得票2回答
CLion/PyCharm/PHPStorm/IntelliJ无法启动,提示“IDE尚未初始化”

当我尝试启动我的CLion IDE(或其他JetBrains IDE,如PyCharm,IntelliJ IDEA,PHP Storm等)时,它会失败,并在控制台上显示以下消息:IDE has not been initialized yet (在通常的JVM警告后,我总是能启动IDE。) 为...

11得票4回答
我可以强制生成JVM崩溃日志文件吗?

JVM崩溃时的日志文件包含了各种有用的调试信息,例如被加载的共享库和完整的环境。我是否可以通过编写会导致JVM崩溃的代码或其他方式来强制生成这些信息之一?或者,是否可以通过其他方式访问相同的信息?

34得票3回答
Java比较和交换语义及性能

Java中的比较和交换(compare and swap)语义是什么?换句话说,AtomicInteger的比较和交换方法仅保证不同线程对原子整数实例的特定内存位置进行有序访问,还是保证对所有内存位置进行有序访问,即它作为volatile(内存屏障)一样起作用? 根据docs: - wea...