jvm相关内容

对象的地址在其生命周期内是否固定?

对象的地址在其生命周期内是不变的还是可以改变的?我只是认为一个对象的地址永远不会改变.它依赖于JVM吗?我还没有找到任何明确的规范. 解决方案 java中对象的地址不固定;相反,它可能会改变(视情况而定). 这是因为通常对象是在伊甸园空间中分配的.然后它们移动到幸存者空间,如果它们在一些垃圾收集周期中幸存下来,它们也会移动到老年代空间.所以它确实改变了.但是,如果对象被分配在伊甸园空 ..
发布时间:2022-01-16 12:26:37 Java开发

减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC

我正在一台具有 16Gb RAM、一个 8 核处理器和 Java 1.6 的机器上运行一个内存密集型应用程序,所有这些都在 CentOS 版本 5.2(最终版)上运行.确切的 JVM 详细信息是: java 版本“1.6.0_10"Java(TM) SE 运行时环境 (build 1.6.0_10-b33)Java HotSpot(TM) 64 位服务器 VM(内部版本 11.0-b15,混合模 ..
发布时间:2022-01-16 12:26:29 Java开发

JVM可以提供快照持久化吗?

是否可以转储正在运行的 JVM 的映像,然后通过将映像加载到 JVM 来恢复之前的状态?我相当肯定答案是否定的,但我很想弄错. 随着 JVM 可用的所有动态语言增加了交互性,能够保存编码会话将有助于节省手动将 VM 恢复到先前会话的时间. 解决方案 有一个JSR 323 建议 不久前,但它是 被拒绝.您可以在这些文章中找到一些链接,了解这背后的研究及其需要采取的措施.它大多被认为是一 ..
发布时间:2022-01-16 12:26:13 Java开发

-Xms 和 -Xmx 标志是否保留了机器的资源?

我知道JVM进程的-Xms标志是允许JVM进程使用特定数量的内存来初始化它的进程.而关于Java应用程序的性能,通常建议在启动应用程序时将-Xms和-Xmx设置为相同的值,例如-Xms2048M -Xmx2048M. 我很好奇 -Xms 和 -Xmx 标志是否意味着 JVM 进程预留了特定数量的内存以防止同一进程中的其他进程机器不要使用它. 是这样吗? 解决方案 Xmx 只是保 ..
发布时间:2022-01-16 12:26:06 Java开发

无法识别的 VM 选项“UseParNewGC",错误:无法创建 Java 虚拟机

我正在尝试使用 jre 10.0.1 64 位启动服务器.windows启动批处理文件中JVM的设置有明显的变化.使用 -XX:+UseParNewGC 的设置作为错误的参考点,为了让 JVM 服务器以 java 10 启动而不是我展示的 java 8 设置,需要将其更改为什么? 导致错误引用的代码行是: 设置 JAVA_PARAMETERS=-XX:+UseParNewGC -XX:+C ..
发布时间:2022-01-16 12:25:50 其他开发

桌面上的 JVM 是否使用 JIT 编译?

我总是遇到声称 Java 被解释的文章.我知道 Oracle 的 HotSpot JRE 提供即时编译,但是对于大多数桌面用户来说是这样吗?例如,如果我通过以下方式下载 Java:http://www.java.com/en/download,这会包括 JIT 编译器吗? 解决方案 是的,绝对的.声称 Java 是解释型的文章通常由不了解 Java 工作原理或不了解解释型含义的人撰写. ..
发布时间:2022-01-16 12:25:43 Java开发

我从来没有见过一个软件以 jar 的形式发布,那么我怎样才能让一个软件也以 exe 的形式发布呢?

是不是大家都以为别人不把软件发布成jar,然后也把软件发布成exe? 解决方案 是的.如果您与最终用户而不是程序员打交道,那么为他的平台构建一个本地解决方案是一个好主意.创建一个 dmg、一个 exe 和一些 linux 包.对于 exe 文件,请查看 launch4j 或 jsmooth. ..
发布时间:2022-01-16 12:25:36 Java开发

在未捕获的异常上生成 Java 堆转储

当触发未捕获的异常时,我尝试生成堆转储.我尝试使用 jmap,但是因为当异常发生时进程已经完成,所以这是不可能的. 使用 UncaughtExceptionHandler 也不是选项,因为我只有被执行程序的二进制文件. 谁能帮帮我? 编辑:通过命令行或类似方法可以使用该技术很重要,因为我需要将其自动化.使用 GUI 是不行的 解决方案 这可以通过 JVMTI 代理将监听 ..
发布时间:2022-01-16 12:25:15 Java开发

当服务器 VM 是默认选项时,为什么存在 -server 选项?

java 命令的帮助菜单显示-server 选项是选择“服务器"VM.它还指出“服务器"是默认选项.为什么这么多余? 编辑: 如果有任何帮助,“java -version"会产生: java 版本“1.8.0_191"Java(TM) SE 运行时环境(内置 1.8.0_191-b12)Java HotSpot(TM) 64 位服务器 VM(内部版本 25.191-b12,混合模式) ..
发布时间:2022-01-16 12:24:49 Java开发

假设我知道我将在 x64 cpus 上运行,我可以忽略哪些 JVM 同步实践?

我知道 JVM 内存模型是为 CPU 的最小公分母而设计的,因此它必须假设 JVM 可以在其上运行的 CPU 的最弱模型(例如 ARM). 现在,考虑到 x64 具有相当强大的内存模型,假设我知道我的程序只能在 64 位 x86 CPU 上运行,我可以忽略哪些同步做法?当我的程序通过虚拟化运行时,这也适用吗? 示例: 众所周知,JVM 的内存模型需要同步对 long 和 double ..
发布时间:2022-01-16 12:24:40 Java开发

JVM 是否可以同时运行多个程序?

JVM 可以同时运行多个程序吗?如果是这样,怎么做?如果不是,为什么? 要运行程序,我们只需这样做 java 程序名 但是我们可以使用同一个 JVM 实例来运行另一个程序吗? 解决方案 答案取决于你对“程序"的定义.具有 main 方法并且以 java NameOfClass 开头的 Java 程序通常不能在同一个 JVM 中运行,因为没有内置的资源或命名空间分离.例如,如果两个 ..
发布时间:2022-01-16 12:24:30 Java开发

即使坏人试图抓住它,我如何在任何 OutOfMemoryException 上使 JVM 退出

OOME 属于通常您不应该从中恢复的错误类别.但是如果它被埋在一个线程中,或者有人抓住了它,应用程序就有可能进入一个它没有退出但没有用的状态.即使面对使用可能愚蠢地尝试捕获 Throwable 或 Error/OOME 的库,如何防止这种情况的任何建议?(即您无权直接修改源代码) 解决方案 用户 @dennie 发表了应该真的评论成为自己的答案.较新的 JVM 功能使这变得容易,特别是 ..
发布时间:2022-01-16 12:24:24 Java开发

向正在运行的 JVM 发送信号

我正在使用自定义信号处理程序在自定义 Java 守护程序中捕获 TERM、ABRT 和 INT 信号.我在代码中有这个处理程序,以便我可以向它发送 TERM 信号并通过 kill 命令优雅地关闭程序.信号处理程序现在可以工作,但是当我编译代码时,我收到以下警告(多次): 警告:sun.misc.SignalHandler 是 Sun 专有 API,可能会在未来的版本中删除 在使用这些类 ..
发布时间:2022-01-16 12:24:05 Java开发

Java在try-catch-finally机制中的返回值

我刚刚遇到以下代码: 公共类 TestFinally {公共静态无效主要(字符串[]参数){int returnValue = 函数();System.out.println("返回值:" + returnValue);}公共静态int函数(){尝试 {返回 1;} 捕捉(异常 e){返回 2;} 最后{返回 3;}}} 毫无疑问,运行此代码将产生“返回值:3"的输出. 但是,我很好奇: ..
发布时间:2022-01-16 12:23:59 Java开发

Java物理机呢?

Java 是移动设备最重要的语言,因为它通过在字节码和机器之间插入 JVM 虚拟层,允许在每台机器上执行相同的二进制/字节码. 我们能否为 X86/arm 构建采用字节码代替传统操作码和操作数的 Java 物理机?所以实际的操作系统可以使用 Java 构建,它比在我们当前的操作系统上安装 JVM 更高效/更快 我的猜测是它会限制安装新版本的 JVM,但许多移动设备确实支持有限版本的 J ..
发布时间:2022-01-16 12:23:51 Java开发

反汇编 Java JIT 编译的原生字节码

有没有办法对 Java 即时编译器生成的本机代码进行汇编转储? 还有一个相关的问题:有没有什么方法可以在不运行 JVM 的情况下使用 JIT 编译器将我的代码编译为本机代码? 解决方案 是的,有一种打印生成的本机代码的方法(需要 OpenJDK 7). 不,没有办法使用 JDK 的 JIT 将 Java 字节码编译为本机代码并将其保存为本机可执行文件. 即使这是可能的,它 ..
发布时间:2022-01-16 12:23:38 Java开发

Java Attach API:动态更改 java.library.path

在我的 Windows 机器上使用 com.sun.tools.attach API 时,我在调用时收到以下错误 VirtualMachine.list() java.lang.UnsatisfiedLinkError:java.library.path 中没有附加 原因是缺少 attach.dll.attach.dll 位于 $JRE/bin/ 中.当使用 -Djava.library ..
发布时间:2022-01-16 12:23:20 Java开发