问题标签 [jvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4362 浏览

java - 整数数组如何在 JVM 内部存储?

Java 中的整数数组作为 32 位值块存储在内存中。如何存储 Integer 对象数组?IE

我想 Integer 数组中的每个元素都是对 Integer 对象的引用,并且 Integer 对象具有对象存储开销,就像任何其他对象一样。

然而,我希望 JVM 在后台做一些神奇的聪明,因为整数是不可变的,并且像整数数组一样存储它。

我的希望是不是太天真了?在每最后一盎司的性能都很重要的应用程序中,整数数组是否比 int 数组慢得多?

0 投票
3 回答
4538 浏览

java - 在 HP-UX 环境 JVM 中,C 堆与 Java 堆中运行的是什么?

我在 HP-UX 环境中遇到了某些 Java 应用程序的特殊问题。

堆设置为 -mx512,但是,使用 gpm 查看此 java 进程的内存区域,它显示它使用了 1.6GB 的 RSS 内存,其中 1.1GB 分配给了 DATA 区域。在 24-48 小时内快速增长,然后大幅放缓,仍然每隔几个小时增长 2MB。但是,Java 堆没有泄漏的迹象。

好奇这是怎么可能的,我研究了一下,发现了这篇关于 java 堆和 c 堆内存泄漏的 HP 文章:http: //docs.hp.com/en/JAVAPERFTUNE/Memory-Management.pdf

我的问题是什么决定了在 C 堆和 java 堆中运行的内容,对于不通过 java 堆运行的东西,您将如何识别在 C 堆上运行的那些对象?此外,Java 堆是否位于 C 堆内?

0 投票
17 回答
4788 浏览

jvm - 为什么我们需要其他 JVM 语言

在这里看到除了 Java 之外还有很多在 JVM 上运行的语言。我对在 JVM 中运行的其他语言的整个概念有点困惑。所以:

为 JVM 提供其他语言有什么好处?

为 JVM 编写语言/编译器需要什么(高级术语)?

您如何在 JVM 中以一种语言(Java 除外)编写/编译/运行代码?


编辑:在接受的答案中回答了 3 个后续问题(最初是评论)。为了便于阅读,它们在这里重印:

使用 JPython 编写的应用程序如何与 Java 应用程序交互?

此外,该 JPython 应用程序可以使用任何 JDK 函数/对象吗?

如果它是 Jaskell 代码,它是一种函数式语言这一事实​​是否不会使其与 JDK 不兼容?

0 投票
6 回答
3076 浏览

java - Java VM 是否在内存中移动对象,如果是,如何移动?

Java 虚拟机是否曾经移动内存中的对象,如果是,它如何处理对移动对象的更新引用?

我问是因为我正在探索以分布式方式(即跨多个服务器)存储对象的想法,但出于效率原因,我需要能够在服务器之间移动对象。对象需要能够包含指向彼此的指针,甚至指向远程服务器上的对象。我正在尝试考虑更新对移动对象的引用的最佳方法。

到目前为止,我的两个想法是:

  1. 在对象的生命周期内保持一个不会移动的引用间接,如果对象移动,我们会更新它。但是 - 这些间接是如何管理的?
  2. 为每个对象保留一个反向引用列表,这样我们就知道如果对象被移动,必须更新什么。当然,这会产生性能开销。

我会对有关这些方法的反馈以及对替代方法的任何建议感兴趣。

0 投票
5 回答
25006 浏览

java - JVM 会阻止尾调用优化吗?

我在这个问题上看到了这句话:什么是构建 Web 服务的好的函数式语言?

Scala 尤其不支持尾调用消除,除非在自递归函数中,这限制了您可以执行的组合类型(这是 JVM 的基本限制)。

这是真的?如果是这样,那么造成这种基本限制的 JVM 是什么?

0 投票
6 回答
1557 浏览

java - 如何在第三方类中给 java.util.Random 一个特定的种子?

我有一个 Java 程序,它加载第三方类文件(我没有编写的类)并执行它们。这些类经常使用java.util.Random,默认情况下,每次实例化时都会生成随机的起始种子值。出于可重复性的原因,我想每次都为这些类提供相同的起始种子,仅由我自行决定更改它。

以下是一些明显的解决方案,以及为什么它们不起作用:

  1. 在第三方类文件中使用不同的 Random 类。这里的问题是我只加载类文件,不能修改源。

  2. 使用自定义类加载器来加载我们自己的 Random 类,而不是 JVM 的版本。这种方法不起作用,因为 Java 不允许类加载器覆盖java包中的类。

  3. 将 rt.jar 的java.util.Random实现替换为我们自己的,或者将文件放入 JVM 的受信任位置。这些方法要求应用程序的用户在他们的机器上安装 JVM,这并不好。

  4. 将自定义java.util.Random类添加到引导类路径。虽然这在技术上可行,但对于这个特定的应用程序来说,这是不切实际的,因为这个应用程序是供最终用户从 IDE 运行的。我想让用户方便地运行应用程序,这意味着强迫他们设置引导类路径是一件痛苦的事情。我无法将其隐藏在脚本中,因为它旨在从 Eclipse 之类的 IDE 中运行(以便于调试。)

那么我该怎么做呢?

0 投票
4 回答
753 浏览

scala - Scala REPL 中的递归重载语义 - JVM 语言

使用 Scala 的命令行 REPL:

看来你不能在 REPL 中定义重载的递归方法。我认为这是 Scala REPL 中的一个错误并提交了它,但它几乎立即以“wontfix 关闭:鉴于解释器的语义,我看不出有任何方法可以支持,因为必须编译这两种方法一起。” 他建议将这些方法放在一个封闭的对象中。

是否有 JVM 语言实现或 Scala 专家可以解释原因?例如,如果这些方法相互调用,我可以看到这将是一个问题,但在这种情况下呢?

或者,如果这是一个太大的问题,而您认为我需要更多的先决知识,那么是否有人有任何关于语言实现的书籍或网站的良好链接,尤其是在 JVM 上?(我知道 John Rose 的博客,以及 Programming Language Pragmatics 这本书……但仅此而已。:)

0 投票
19 回答
735033 浏览

java - 如何设置 JVM 使用的代理

很多时候,Java 应用程序需要连接到 Internet。最常见的示例发生在读取 XML 文件并需要下载其模式时。

我在代理服务器后面。如何设置我的 JVM 以使用代理?

0 投票
6 回答
91341 浏览

java - Java VM EXCEPTION_ACCESS_VIOLATION 的可能原因?

当 Java VM 因 EXCEPTION_ACCESS_VIOLATION 崩溃并生成 hs_err_pidXXX.log 文件时,这表明了什么?错误本身基本上是一个空指针异常。它总是由 JVM 中的错误引起的,还是有其他原因,例如硬件故障或软件冲突?

编辑:有一个本机组件,这是 win32 上的 SWT 应用程序。

0 投票
16 回答
533809 浏览

eclipse - Eclipse 的最佳 JVM 设置是什么?

您发现运行 Eclipse 的最佳 JVM 设置是什么?