问题标签 [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.
java - 整数数组如何在 JVM 内部存储?
Java 中的整数数组作为 32 位值块存储在内存中。如何存储 Integer 对象数组?IE
我想 Integer 数组中的每个元素都是对 Integer 对象的引用,并且 Integer 对象具有对象存储开销,就像任何其他对象一样。
然而,我希望 JVM 在后台做一些神奇的聪明,因为整数是不可变的,并且像整数数组一样存储它。
我的希望是不是太天真了?在每最后一盎司的性能都很重要的应用程序中,整数数组是否比 int 数组慢得多?
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 堆内?
jvm - 为什么我们需要其他 JVM 语言
我在这里看到除了 Java 之外还有很多在 JVM 上运行的语言。我对在 JVM 中运行的其他语言的整个概念有点困惑。所以:
为 JVM 提供其他语言有什么好处?
为 JVM 编写语言/编译器需要什么(高级术语)?
您如何在 JVM 中以一种语言(Java 除外)编写/编译/运行代码?
编辑:在接受的答案中回答了 3 个后续问题(最初是评论)。为了便于阅读,它们在这里重印:
使用 JPython 编写的应用程序如何与 Java 应用程序交互?
此外,该 JPython 应用程序可以使用任何 JDK 函数/对象吗?
如果它是 Jaskell 代码,它是一种函数式语言这一事实是否不会使其与 JDK 不兼容?
java - Java VM 是否在内存中移动对象,如果是,如何移动?
Java 虚拟机是否曾经移动内存中的对象,如果是,它如何处理对移动对象的更新引用?
我问是因为我正在探索以分布式方式(即跨多个服务器)存储对象的想法,但出于效率原因,我需要能够在服务器之间移动对象。对象需要能够包含指向彼此的指针,甚至指向远程服务器上的对象。我正在尝试考虑更新对移动对象的引用的最佳方法。
到目前为止,我的两个想法是:
- 在对象的生命周期内保持一个不会移动的引用间接,如果对象移动,我们会更新它。但是 - 这些间接是如何管理的?
- 为每个对象保留一个反向引用列表,这样我们就知道如果对象被移动,必须更新什么。当然,这会产生性能开销。
我会对有关这些方法的反馈以及对替代方法的任何建议感兴趣。
java - JVM 会阻止尾调用优化吗?
我在这个问题上看到了这句话:什么是构建 Web 服务的好的函数式语言?
Scala 尤其不支持尾调用消除,除非在自递归函数中,这限制了您可以执行的组合类型(这是 JVM 的基本限制)。
这是真的?如果是这样,那么造成这种基本限制的 JVM 是什么?
java - 如何在第三方类中给 java.util.Random 一个特定的种子?
我有一个 Java 程序,它加载第三方类文件(我没有编写的类)并执行它们。这些类经常使用java.util.Random
,默认情况下,每次实例化时都会生成随机的起始种子值。出于可重复性的原因,我想每次都为这些类提供相同的起始种子,仅由我自行决定更改它。
以下是一些明显的解决方案,以及为什么它们不起作用:
在第三方类文件中使用不同的 Random 类。这里的问题是我只加载类文件,不能修改源。
使用自定义类加载器来加载我们自己的 Random 类,而不是 JVM 的版本。这种方法不起作用,因为 Java 不允许类加载器覆盖
java
包中的类。将 rt.jar 的
java.util.Random
实现替换为我们自己的,或者将文件放入 JVM 的受信任位置。这些方法要求应用程序的用户在他们的机器上安装 JVM,这并不好。将自定义
java.util.Random
类添加到引导类路径。虽然这在技术上可行,但对于这个特定的应用程序来说,这是不切实际的,因为这个应用程序是供最终用户从 IDE 运行的。我想让用户方便地运行应用程序,这意味着强迫他们设置引导类路径是一件痛苦的事情。我无法将其隐藏在脚本中,因为它旨在从 Eclipse 之类的 IDE 中运行(以便于调试。)
那么我该怎么做呢?
scala - Scala REPL 中的递归重载语义 - JVM 语言
使用 Scala 的命令行 REPL:
给
看来你不能在 REPL 中定义重载的递归方法。我认为这是 Scala REPL 中的一个错误并提交了它,但它几乎立即以“wontfix 关闭:鉴于解释器的语义,我看不出有任何方法可以支持,因为必须编译这两种方法一起。” 他建议将这些方法放在一个封闭的对象中。
是否有 JVM 语言实现或 Scala 专家可以解释原因?例如,如果这些方法相互调用,我可以看到这将是一个问题,但在这种情况下呢?
或者,如果这是一个太大的问题,而您认为我需要更多的先决知识,那么是否有人有任何关于语言实现的书籍或网站的良好链接,尤其是在 JVM 上?(我知道 John Rose 的博客,以及 Programming Language Pragmatics 这本书……但仅此而已。:)
java - 如何设置 JVM 使用的代理
很多时候,Java 应用程序需要连接到 Internet。最常见的示例发生在读取 XML 文件并需要下载其模式时。
我在代理服务器后面。如何设置我的 JVM 以使用代理?
java - Java VM EXCEPTION_ACCESS_VIOLATION 的可能原因?
当 Java VM 因 EXCEPTION_ACCESS_VIOLATION 崩溃并生成 hs_err_pidXXX.log 文件时,这表明了什么?错误本身基本上是一个空指针异常。它总是由 JVM 中的错误引起的,还是有其他原因,例如硬件故障或软件冲突?
编辑:有一个本机组件,这是 win32 上的 SWT 应用程序。
eclipse - Eclipse 的最佳 JVM 设置是什么?
您发现运行 Eclipse 的最佳 JVM 设置是什么?