草庐IT

jvm-bytecode

全部标签

java - 如何使用 JVM 参数为 java.util.Calendar 指定 firstDayOfWeek

我正在尝试将java.util.Calendar的默认firstDayOfWeek从SUNDAY更改为MONDAY。是否可以通过JVM配置而不是添加这段代码来实现?cal.setFirstDayOfWeek(Calendar.MONDAY); 最佳答案 一周的第一天源自当前语言环境。如果您不设置日历的区域设置(Calendar.getInstance(Locale)或newGregorianCalendar(Locale)),它将使用系统的默认设置。系统的默认值可以被JVM参数覆盖:publicstaticvoidmain(Stri

java - 编译器优化 : Java bytecode

我目前正在编写一个针对翻译中的Java字节码的玩具编译器。我想知道在编写.class文件之前,是否存在可以在发出的字节码中进行的各种简单窥视孔优化的某种目录,也许是摘要。我实际上知道一些库具有此功能,但我想自己实现它。 最佳答案 您知道Proguard吗?http://proguard.sourceforge.net/这是一个很棒的字节码优化器,它实现了很多优化。请参阅常见问题解答以获取列表:http://proguard.sourceforge.net/FAQ.html评估常量表达式。删除不必要的字段访问和方法电话。删除不必要的分

java - 是否有可能为特定的 JVM 实例获得真正唯一的 ID?

我需要一种方法来从JVM中运行的Java代码中唯一且永久地标识该JVM的实例。也就是说,如果我在同一台机器上同时运行两个JVM,每个都是可区分的。它也与在其他机器上运行的JVM以及在同一台机器上的future执行有区别,即使进程ID被重用。我想我可以通过识别开始时间、机器MAC和进程ID并以某种方式组合它们来实现类似的功能。我想知道是否有一些标准方法可以实现这一目标。更新:我看到每个人都为整个session推荐了一个UUID。这似乎是个好主意,尽管可能有点太重量级了。不过这是我的问题:我想使用JVMid在每个JVM执行中创建多个唯一标识符,这些标识符以某种方式合并了JVM实例。我的理解

java - 一个JVM可以同时运行多个程序吗?

JVM是否可以同时运行多个程序?如果是这样,如何?如果不是,为什么?要运行程序,我们只需做javaProgramName但是我们可以使用同一个JVM实例来运行另一个程序吗? 最佳答案 答案取决于您对“程序”的定义。具有main方法并且以javaNameOfClass开头的Java程序通常不能在同一JVM中运行,因为没有内置的资源或命名空间分离。例如,如果两个程序使用同一库的冲突版本怎么办?我们也有旨在共享JVM的应用程序,例如企业应用程序。这些程序旨在在“应用程序服务器”的上下文中运行,“应用程序服务器”基本上是用于运行其他程序的程

java - 为什么 JVM 的设计方式不允许强制垃圾收集?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion据我所知,我们不能强制在JAVA中进行垃圾回收。我们最多只能通过调用System.gc()或Runtime.gc()来发送请求。这样做会向JVM发送垃圾收集请求,但不能保证垃圾收集会发生。所以我的问题是:是否有任何特殊原因,为什么JVM的设计方式不支持强制垃圾收集?

java - JVM线程调度算法是什么?

我真的很好奇JVM是如何与线程一起工作的!在网上搜索时,我找到了一些关于RTSJ的Material,但我不知道它是否是我的答案的正确方向。有人可以给我有关JVM调度算法的方向、Material、文章或建议吗?我也在寻找有关调度程序中Java线程默认配置的信息,例如在时间切片的情况下每个线程需要多长时间。感谢您的帮助,谢谢! 最佳答案 没有单一的Java虚拟机;JVM是一种规范,它有多种实现,包括OpenJDK版本和Sun版本等。我不确定,但我猜想任何合理的JVM都会简单地使用操作系统提供的底层线程机制,这意味着UNIX(MacOSX

java - 安卓工作室 : "Gradle sync failed: Could not run JVM from the selected JDK."

自从装了AndroidStudio3.2,一直跑不了Java,试过jdk-8u181-windows-x64,jdk-10.0.2_windows-x64_bin,jdk-11_windows-x64_bin,设置PATH并重新安装所有东西无数次,结果都是一样的——没有出现“java”,错误信息是:-Gradlesyncfailed:CouldnotrunJVMfromtheselectedJDK.PleaseensureJDKinstallationisvalidandcompatiblewiththecurrentOS(Windows8.16.3,amd64).Ifyouareus

java - 如果未指定 -d32 或 -d64 等选项,64 位 JVM 是否会以 64 位模式运行

我在64位Centos机器上安装了64位Java。我的问题是,如果我不指定-d64选项,即使没有安装32位JVM,JVM也会以32位模式运行吗?另外我有点好奇我们是否可以将-d64选项与“javac”一起使用。如果是,那么它意味着什么或可以在哪里使用?我在阅读thisarticle时遇到了这个.谢谢 最佳答案 为JRE选择数据模型(位)是为了约束应用程序的运行只能在一种模式下运行。Java字节码旨在在两种数据模型中工作,因此对于100%纯Java应用程序,将根据每种架构的行为和优势工作。但是,如果您的应用程序使用仅在一种模式下工作的

java - 找不到库 : jvm. dll。这里发生了什么?

在安装了我的应用程序的某些计算机(但不是全部)中,看起来安装成功后,当您尝试运行它时,它会显示此错误:该文件存在于该目录中,因此,我不确定为什么它说找不到库。该错误后跟最后:然后什么也没有发生。应用程序不启动。知道发生了什么事吗?有些人指出了这个似乎在谈论这个问题的错误报告:https://bugs.openjdk.java.net/browse/JDK-8191176但我已经使用8u162和8u172(早期访问,特别是jdk-8u172-ea-bin-b03-windows-x64-18_jan_2018)构建了我的应用程序,结果是一样的。它发生在Windows10Pro1703和1

JVM 8 更新后 Java Sound 显着变慢

我的应用程序在启动时加载了一堆音频剪辑。它使用java.applet.Applet.newAudioClip(URLaudioFileURL)加载同一文件夹中的文件。我可以看到这个函数基本上是一个包装器来获取JavaSoundAudioClip对象直到昨天,我用JDK7编译了JAR,并用JRE版本7update45启动它。然后我更新到版本8update31。现在,每个音频的加载时间比以前长十倍(以前是每个0.2秒,现在是2到3秒)同样的行为发生在不同的硬件配置上。操作系统为64位Windows7,Java7和8运行环境均为32位。深入调试,我发现最慢的方法是AudioSystem.ge