Questions tagged «jvm»

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


3
_JAVA_OPTIONS,JAVA_TOOL_OPTIONS和JAVA_OPTS之间的区别
我认为最好在_JAVA_OPTIONS和之间进行比较JAVA_TOOL_OPTIONS。我一直在寻找一个,但是什么也找不到,所以希望我们可以在Stackoverflow上找到相关知识。 JAVA_OPTS包括在内是为了完整性。它不是JVM的一部分,但是有很多关于它的问题。 我知道的: 到目前为止,我发现: JAVA_OPTSJDK并不使用它,而是其他许多应用程序使用它(请参阅此文章)。 JAVA_TOOL_OPTIONS并且_JAVA_OPTIONS是将JVM参数指定为环境变量而不是命令行参数的方法。 至少由java和拾取javac 它们具有以下优先级: _JAVA_OPTIONS (覆盖其他) 命令行参数 JAVA_TOOL_OPTIONS (被其他人覆盖) 我想知道什么 是否有任何官方文件进行比较JAVA_TOOL_OPTIONS和_JAVA_OPTIONS JAVA_TOOL_OPTIONS和之间是否有其他区别_JAVA_OPTIONS(优先顺序除外)。 哪些可执行文件可以使用JAVA_TOOL_OPTIONS和_JAVA_OPTIONS(java以及和之外javac) 什么可以被包含在任何限制JAVA_TOOL_OPTIONS和_JAVA_OPTIONS 官方文件 我尚未找到有关的任何文档_JAVA_OPTIONS。的文档JAVA_TOOL_OPTIONS并没有太多区别: 由于无法始终访问或修改命令行,例如,在嵌入式VM或仅在脚本内部深层启动的VM中,可以提供JAVA_TOOL_OPTIONS变量,以便在这种情况下可以启动代理。... 示例脚本 这是我用来弄清楚的代码。控制台输出作为注释包括在内: export JAVA_OPTS=foobar export JAVA_TOOL_OPTIONS= export _JAVA_OPTIONS="-Xmx512m -Xms64m" java -version # Picked up JAVA_TOOL_OPTIONS: # Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m # java version "1.7.0_40" OpenJDK Runtime Environment (IcedTea …
151 java  jvm  jvm-arguments 


9
字节码功能在Java语言中不可用
当前(Java 6)中有您可以用Java字节码执行的,您无法在Java语言中执行的操作吗? 我知道两者都已经完成了Turing,所以将“可以做”理解为“可以更快/更好地做事,或者只是以其他方式做”。 我正在考虑invokedynamic无法使用Java生成额外的字节码,例如,除非特定的字节码用于将来的版本。
146 java  jvm  bytecode 

27
您如何使JVM崩溃?
我正在读一本关于编程技能的书,作者问受访者:“如何崩溃JVM?” 我认为您可以通过编写一个无限的for循环来这样做,最终将耗尽所有内存。 有人有主意吗?
144 java  jvm 

7
如何正确设置JVM TimeZone
我正在尝试运行Java程序,但是它采用默认的GMT时区而不是OS定义的时区。我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007) Windows指定了中央时区,但是当我运行以下程序时,它给了我GMT时间。 import java.util.Calendar; public class DateTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); System.out.println(now.getTimeZone()); System.out.println(now.getTime()); } } 这是输出 sun.util.calendar.ZoneInfo[id="GMT", offset=0, dstSavings=0, useDaylight=false, transitions=0, lastRule=null] Mon Mar 22 13:46:45 GMT 2010 请注意,我不想从应用程序中设置时区。我希望JVM使用的时区应该是操作系统中指定的时区。(对于具有JDK 1.4版和Microsoft Server 2003的其他服务器,我没有发现此问题)。 任何想法将不胜感激。

8
Java中变量的内存地址
请看下面的图片。当我们在Java中用new关键字创建对象时,我们正在从OS获取内存地址。 编写时,out.println(objName)我们可以看到一个“特殊”字符串作为输出。我的问题是: 这是什么输出? 如果是操作系统给我们的内存地址: a)如何将该字符串转换为二进制? b)如何获得一个整数变量地址?

3
Java方法声明中的最大参数数量
Java中的方法可以拥有的最大参数数量是多少?为什么? 我在64位Windows系统上使用Java 1.8。 关于StackOverflow的所有答案都表明,技术限制为255个参数,但未指定原因。 确切地说,静态方法为255,非静态方法为254(this在这种情况下为第255)。 我认为这可以用某种规范来描述,并且只允许静态定义最大数量的参数。 但这仅对int所有4字节类型有效。我对long参数进行了一些测试,在这种情况下,我只能声明127个参数。 使用String参数时,我从测试中得出的允许数字为255(可能是因为Java中的参考大小为4个字节?)。 但是由于我使用的是64位系统,因此引用的大小应为8个字节,因此与String参数类似,使用参数时,最大允许数目应为127 long。 如何精确应用此限制? 限制与方法的堆栈大小有关吗? 注意:我实际上不会在任何方法中使用这些许多参数,但是这个问题只是为了阐明确切的行为。
133 java  jvm 

2
Java:int数组使用非零元素初始化
根据JLS,int数组应在初始化后立即用零填充。但是,我面临的情况并非如此。这种行为首先在JDK 7u4中发生,并且在以后的所有更新中也发生(我使用64位实现)。以下代码引发异常: public static void main(String[] args) { int[] a; int n = 0; for (int i = 0; i < 100000000; ++i) { a = new int[10]; for (int f : a) if (f != 0) throw new RuntimeException("Array just after allocation: "+ Arrays.toString(a)); Arrays.fill(a, 0); for (int j …

11
覆盖Java System.currentTimeMillis以测试对时间敏感的代码
System.currentTimeMillis除了在主机上手动更改系统时钟外,是否可以通过代码或JVM参数覆盖通过(通过)显示的当前时间? 一点背景: 我们有一个系统,该系统运行许多会计工作,这些工作围绕其当前日期(即每月的1号,每年的1号等)进行逻辑转换。 不幸的是,许多传统代码都调用诸如new Date()或的函数Calendar.getInstance(),而这两个函数最终都调用到System.currentTimeMillis。 出于测试目的,现在,我们不得不手动更新系统时钟,以操纵代码认为正在运行测试的时间和日期。 所以我的问题是: 有没有办法覆盖返回的内容System.currentTimeMillis?例如,要告诉JVM在从该方法返回之前自动添加或减去一些偏移量? 提前致谢!
129 java  testing  jvm  systemtime 

12
在运行时获取Java版本
我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: if (System.getProperty("java.version").startsWith("1.5.")) { ... } else { ... } 这对其他JVM有用吗?有没有更好的方法来检查这一点?
128 java  jvm 

10
如何找出我的JVM使用的密钥库?
我需要将证书导入到我的JVM密钥库中。我正在使用以下内容: keytool -import -alias daldap -file somecert.cer 所以我可能需要将通话更改为: keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
125 java  jvm  keytool 

5
Java使用的内存远大于堆大小(或正确大小的Docker内存限制)
对于我的应用程序,Java进程使用的内存远远大于堆大小。 容器运行所在的系统开始出现内存问题,因为容器占用的内存比堆大小大得多。 堆大小设置为128 MB(-Xmx128m -Xms128m),而容器最多占用1GB的内存。正常情况下需要500MB。如果docker容器的限制低于(例如mem_limit=mem_limit=400MB),则该进程将被操作系统的内存不足杀手杀死。 您能解释一下为什么Java进程使用的内存比堆多得多吗?如何正确调整Docker内存限制的大小?有没有办法减少Java进程的堆外内存占用量? 我使用来自JVM中本机内存跟踪的命令收集了有关此问题的一些详细信息。 从主机系统,我获得了容器使用的内存。 $ docker stats --no-stream 9afcb62a26c8 CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 9afcb62a26c8 xx-xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.0acbb46bb6fe3ae1b1c99aff3a6073bb7b7ecf85 0.93% 461MiB / 9.744GiB 4.62% 286MB / 7.92MB 157MB / 2.66GB 57 从容器内部,获取进程使用的内存。 $ ps -p 71 -o pcpu,rss,size,vsize …
118 java  linux  docker  memory  jvm 

6
“ java -cp”和“ java -jar”之间的区别?
使用java -cp CLASSPATH和运行Java应用程序有什么区别java -jar JAR_FILE_PATH?在运行Java应用程序时,其中一个优先于另一个吗?我的意思是这些方法中的哪一种对JVM而言更昂贵(根据其机器资源的使用情况)? 哪一种会导致JVM在尝试运行应用程序时产生更多线程?
118 java  jar  jvm  classpath 

30
Android java.exe完成,退出值非零1
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 我尝试过寻找类似的产品,但没有解决方案。我以前运行的应用程序没有问题,但是我的新应用突然开始给我带来了问题。当我尝试运行它时,它总是失败: Error:Execution failed for task ':app:preDexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files (x86)\Java\jdk1.7.0_67\bin\java.exe'' finished with non-zero exit value 1 这是控制台显示的内容: Executing tasks: [:app:assembleDebug] Configuration on demand is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:compileDebugNdk UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportSupportV42200Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE …

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.