Questions tagged «jvm»

Java虚拟机(JVM)使一组计算机软件程序和数据结构能够使用虚拟机模型来执行其他计算机程序和脚本。使用此标记可解决有关JVM提供的工具或其在特定情况下如何工作的问题。

13
在Java中使用break退出循环是不好的做法吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 我想知道使用break语句退出循环而不满足循环条件是否是“不好的做法” ? 我对Java和JVM的了解不足,无法知道如何处理循环,因此我想知道我是否通过这样做忽略了一些关键的事情。 这个问题的重点:是否有特定的性能开销?
79 java  loops  jvm  break 


7
Java GC:为什么有两个幸存者区域?
对于Sun / Oracle的JVM,我读过GC算法将新一代划分为一个伊甸园区域和两个幸存者区域。我想知道的是,为什么有两个幸存者地区而不是一个?该算法可以在伊甸园和一个幸存者区域之间保持乒乓(目前它在两个幸存者区域之间的方式);还是这种方法有什么缺点?

10
如何在没有JVM参数的情况下在Java 9中隐藏警告“非法反射访问”?
我只是尝试使用Java 9运行服务器,并收到下一个警告: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/home/azureuser/server-0.28.0-SNAPSHOT.jar) to constructor java.nio.DirectByteBuffer(long,int) WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied …
76 java  jvm  netty  java-9 

1
Htop显示具有不同pid的多个Java进程
我的Linux机器上的Htop在启动一个Java程序/ JVM之后显示了许多“进程”。我确实知道JVM运行多个线程(用于实际程序,用于垃圾回收等)。 但是htop为何将它们列出为具有不同pid的多个进程。这些过程到底是什么?
74 java  process  jvm  htop 


4
什么是泛型泛型?它们如何解决“类型擦除”问题?为什么不进行重大更改就不能添加它们?
我已经阅读了尼尔·古夫特(Neal Gafter)关于该主题的博客,但在很多方面仍不清楚。 为什么在给定Java,JVM和现有collection API当前状态的情况下,无法创建Collections API的实现来保留类型信息?这些难道不能以保留向后兼容性的方式替换Java未来版本中的现有实现吗? 举个例子: List<T> list = REIList<T>(T.Class); REIList是这样的: public REIList<T>() implements List { private Object o; private Class klass; public REIList(Object o) { this.o = o; klass = o.getClass(); } ... the rest of the list implementation ... 并且这些方法使用Object o和Class klass来获取类型信息。 为什么保留通用类信息需要更改语言而不仅仅是JVM实现更改? 我不明白什么?

9
什么时候执行该类的静态块?
我有2个罐子,我们称它们为a.jar和b.jar。 b.jar取决于a.jar。 在a.jar中,我定义了一个类,我们称它为StaticClass。在StaticClass中,我定义了一个静态块,调用了一个名为“ init”的方法: public class StaticClass { static { init(); } public void static init () { // do some initialization here } } 在b.jar中,我有一个main,因此在main中,我希望已经调用了init()方法,但实际上没有。我怀疑这是因为jvm尚未加载StaticClass,谁能告诉我 我的结论正确吗? 是什么触发了jvm加载类? 如何获得自动执行的静态块? 谢谢


5
这是JVM错误还是“预期行为”?
我注意到了一些意外的行为(相对于我的个人期望而言是意外的),我想知道是否是JVM中存在错误,或者这可能是一种边缘情况,在这种情况下我不了解某些确切的细节应该发生。假设我们自己在main方法中具有以下代码: int i; int count = 0; for(i=0; i < Integer.MAX_VALUE; i+=2){ count++; } System.out.println(i++); 天真的期望是这样会印刷Integer.MAX_VALUE-1,最大的甚至可以代表int。但是,我认为整数算术应该在Java中“翻转”,因此将1加到会Integer.MAX_VALUE导致Integer.MIN_VALUE。由于Integer.MIN_VALUE仍然小于Integer.MAX_VALUE,因此循环将循环遍历负数甚至整数。最终它将回到0,并且此过程应作为无限循环重复进行。 当我实际运行此代码时,会得到不确定的结果。打印的结果往往大约为一百万,但是确切的值却有所不同。因此,当我认为循环应该是无限循环时,循环不仅终止了,而且似乎随机终止了。这是怎么回事? 我的猜测是,这要么是JVM中的错误,要么是正在进行许多时髦的优化,从而产生了预期的行为。哪有

5
JVM如何确保System.identityHashCode()永远不会改变?
通常,默认实现Object.hashCode()是内存中对象分配地址的某些功能(尽管JLS并未强制执行此功能)。既然VM会在内存中绕开对象,为什么System.identityHashCode()在对象的生存期内,返回的值从不改变? 如果这是一次“一次性”计算(对象的hashCode计算一次,并存放在对象标题或其他内容中),那么这是否意味着两个对象可能具有相同的对象identityHashCode(如果它们恰好是第一次分配给对象)内存中的相同地址)?


3
为什么使用invokedynamic调用Java 8 lambda?
该invokedynamic指令用于帮助VM在运行时确定方法引用,而不是在编译时对其进行硬接线。 这对于动态语言非常有用,在动态语言中直到运行时才知道确切的方法和参数类型。但是Java lambda并非如此。它们被转换为带有定义明确的参数的静态方法。并且可以使用调用此方法invokestatic。 那么,invokedynamic对于lambda的需求是什么,尤其是在性能受到影响时?
69 java  lambda  jvm  java-8  bytecode 

2
invokeinterface的意义是什么?
我正在阅读有关JVM如何调用方法的文章,并且我想我了解了大部分。但是,我仍然无法理解的需求invokeinterface。 我的理解是这样的,一类主要有方法的一个虚拟表,并呼吁与任何一种方法时,invokevirtual或invokeinterface此虚拟表查询。 那么,在接口上定义的方法和在基类上定义的方法之间有什么区别?为什么使用不同的字节码? 指令的描述也看起来非常相似。 这篇文章似乎声称,接口的方法表在每次调用方法时都可以具有“不同的偏移量”。我不明白的是,为什么一个接口根本没有方法表,因为没有对象可以将接口作为其实际类型。 我想念什么?
68 jvm 

18
安装Android Studio,未指向有效的JVM安装错误
我刚刚下载了Android Studio。在尝试运行它时,我不得不修改环境变量并添加 JAVA_HOME 和 C:\ Progra〜2 \ Java \ jdk1.6.0_22 一旦完成这一障碍,现在我将收到另一个错误: The environment variable JAVA_HOME (with the value of *C:\Progra~2\Java\jdk1.6.0_22*) does not point to a valid JVM installation. 我浏览了其他类似的问题,并要求我检查版本,因此我在CMD中执行了以下操作: C:\Users\Andre>java -version java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing) C:\Users\Andre>javac …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.