jvm相关内容

方法区和 PermGen

我试图了解 HotSpot JVM 的内存结构,但对 “方法区" 和 “PermGen" 空间这两个术语感到困惑.我提到的文档说方法区包含类和方法的定义,包括字节码.其他一些文档说它们存储在 PermGen 空间中. 那么我可以断定这两个内存区域相同吗? 解决方案 你应该看看 Java 内存类型 以及关于 ..
发布时间:2022-01-16 12:34:32 Java开发

如何用 Java 编写 JVM

我正在简要阅读 Maxine 这是一个用 Java 编写的开源 JVM 实现.这对我来说听起来很循环.如果java需要虚拟机来运行,那么虚拟机本身如何用Java编写(VM代码不会需要在其中运行的VM,等等?). 编辑:好的,所以我发现我忽略了 Java 不必在 VM 中运行的事实.那么如何解释如何用 LISP 编写 LISP 编译器呢?还是应该完全是一个新问题? 解决方案 您一开始就 ..
发布时间:2022-01-16 12:34:25 Java开发

java中的偏向锁定

我一直在阅读有关偏向锁定如何使用标志 -XX:+UseBiasedLocking 可以提高非竞争同步性能的文章.我找不到关于它的作用以及它如何提高性能的参考. 谁能解释一下它到底是什么,或者可能指向一些可以解释的链接/资源? 解决方案 本质上,如果您的对象仅被一个线程锁定,JVM 可以进行优化并将该对象“偏置"到该线程,以便后续对象上的原子操作不会产生同步成本.我想这通常适用于过于保 ..
发布时间:2022-01-16 12:34:15 Java开发

对象的实例变量存储在 JVM 中的什么位置?

Java中对象的实例变量是否存储在JVM的堆栈或方法区? 另外,我们是否有多个线程的不同实例变量? 如果存储在方法区,实例变量与静态变量存储有何不同? 解决方案 Stack和heap是操作系统分配给JVM的内存,运行在system.堆栈是存储方法和局部变量的内存位置.(变量引用 primitive 或 object 引用也存储在堆栈中).堆是存储对象及其实例变量的内存位置. ..
发布时间:2022-01-16 12:34:05 Java开发

本地 JVM 之间的通信

我的问题:我可以/应该采取什么方法在本地运行的两个或多个 JVM 实例之间进行通信? 问题的一些描述: 我正在为一个项目开发一个系统,该项目需要单独的 JVM 实例来完全隔离某些任务. 在它运行时,“父"JVM 将创建它期望执行的“子"JVM,然后将结果返回给它(以相对简单的 POJO 类的格式,或者可能是结构化的 XML 数据).不应使用 SysErr/SysOut/SysIn 管 ..
发布时间:2022-01-16 12:33:56 Java开发

-XX:OnOutOfMemoryError=“杀死 -9 %p";问题

我在尝试将 -XX:OnOutOfMemoryError="kill -9 %p" 命令传递到我的 jvm 参数时遇到问题. 我正在使用 Jetty7,并且在 start.ini 文件中有这个.在启动时它给我下面的错误.这是与 jre/jre1.6.0_03l64 开始码头:开始码头 2011 年 4 月 26 日星期二 09:54:26 EDT 无法识别的选项:-9 无法创建 J ..
发布时间:2022-01-16 12:33:51 Java开发

我如何知道为 Sun JVM 启用了哪些默认设置?

我想在我的 JVM 上尝试 CompressedOops.不,我想知道它是否可以默认启用.我在 debian/squeeze 上运行这个 jvm: $ java -versionjava版本“1.6.0_22"Java(TM) SE 运行时环境 (build 1.6.0_22-b04)Java HotSpot(TM) 64 位服务器 VM(内部版本 17.1-b03,混合模式) 有人说默认开启 ..
发布时间:2022-01-16 12:32:58 Java开发

Jmap 无法连接进行转储

我们有一个应用程序的公开测试版,它偶尔会导致堆空间溢出.JVM 的反应是永久休假. 为了分析这一点,我想看看内存失败的地方.Java 不希望我这样做.该进程仍在内存中,但似乎没有被识别为 java 进程. 有问题的服务器是 debian Lenny 服务器,Java 6u14 /opt/jdk/bin# ./jmap -F -dump:format=b,file=/tmp/apidu ..
发布时间:2022-01-16 12:32:42 Java开发

jVisualVM中采样和分析的区别

VisualVM 有两个单独的选项卡用于采样和分析.VisualVM 中的采样和分析有​​什么区别? 解决方案 Sampling 意味着进行大量线程转储并分析堆栈跟踪.这通常更快,不需要在您的字节码中进行运行时更改(这可能会破坏它),但也不太准确. Profiling 表示 检测你的类和方法,所以他们“报告"每当他们运行.这更准确,因为它计算每次检测方法的调用,而不仅仅是在转储完成时 ..
发布时间:2022-01-16 12:32:35 Java开发

JVM 选项列表 - 在 Oracle 之后仍在维护?

JVM 选项列表是否仍在任何地方维护?它似乎已经从 Oracle 的网站上消失了,但幸运的是 Wayback Machine 有 一份副本. 解决方案 使用 java -XX:+PrintFlagsFinal 打印可用的 -XX 选项.可以使用以下选项将更多诊断和实验选项添加到列表中:-XX:+UnlockDiagnosticVMOptions-XX:+UnlockExperimental ..
发布时间:2022-01-16 12:32:20 其他开发

JRE 和 JVM 有什么区别?

我认为 JVM 类似于 .NET Framework,对吗?那么什么是JRE?JRE和JVM有什么区别? 解决方案 JRE是虚拟机运行的环境. JRE - JAVA 运行时环境 JVM - JAVA 虚拟机 JRE 是容器,JVM 是内容. ..
发布时间:2022-01-16 12:32:11 Java开发

为什么即使堆等大小稳定,Sun JVM 仍会继续消耗更多的 RSS 内存?

在过去的一年里,我的应用程序的 Java 堆使用量有了很大的改进——减少了 66%.为此,我一直在通过 SNMP 监控各种指标,例如 Java 堆大小、cpu、Java 非堆等. 最近,我一直在监视 JVM 有多少实际内存(RSS,驻留集),我有些惊讶.JVM 消耗的实际内存似乎完全与我的应用程序堆大小、非堆、伊甸园空间、线程数等无关. 由 Java SNMP 测量的堆大小Java 堆 ..
发布时间:2022-01-16 12:31:52 Java开发

为什么这个方法打印 4?

我想知道当您尝试捕获 StackOverflowError 并想出以下方法时会发生什么: 类 RandomNumberGenerator {静态int cnt = 0;公共静态无效主要(字符串[]参数){尝试 {主要(参数);} 捕捉(StackOverflowError 忽略){System.out.println(cnt++);}}} 现在我的问题: 为什么这个方法打印'4'? ..
发布时间:2022-01-16 12:31:44 Java开发

堆 vs 堆栈 vs 永久空间

Java 内存空间(Perm Space、Space Stack、Heap Space)有什么区别? JVM 什么时候使用一个或另一个? 如果我使用 Scala/Groovy/等,有区别吗? 解决方案 简单 堆空间:所有活动对象都分配在这里. 堆栈空间:存储对方法调用或变量实例化中变量的对象的引用. Perm 空间:存储加载的类信息 例如: 学生std = new S ..
发布时间:2022-01-16 12:31:34 Java开发

DVM和JVM有什么区别?

Java虚拟机和Dalvik虚拟机有什么区别? 解决方案 DVM 是基于寄存器的,设计用于在低内存上运行,使用自己的字节码并运行 .Dex 文件 JVM 是基于堆栈的,它使用 java 字节码并运行具有 JIT 的 .class 文件. Java 源代码由 Java 编译器编译成 .class 文件.然后 dx (dexer) 工具,Android SDK 的一部分,将 .cl ..
发布时间:2022-01-16 12:31:24 Java开发

Scala 中隐藏的性能成本?

我遇到了这个老问题和用 scala 2.10.3 做了以下实验. 我重写了 Scala 版本以使用显式尾递归: 导入 scala.annotation.tailrec对象 ScalaMain {私人 val t = 20私人定义运行(){变量 i = 10while(!isEvenlyDivisible(2, i, t))我 += 2打印(i)}@tailrec private def i ..
发布时间:2022-01-16 12:31:10 Java开发

由于权限错误无法启动 jstatd

我尝试在linux机器上运行jstatd jvm监控工具 jboss@hostAddr:/usr/java/jdk1.6.0_18/bin>unname -aLinux hostAddr 2.6.16.60-0.34-smp #1 SMP Fri Jan 16 14:59:01 UTC 2009 x86_64 x86_64 x86_64 GNU/Linux 使用以下命令: jstatd -J ..
发布时间:2022-01-16 12:30:59 Java开发

有没有一种聪明的方法来确定 Java 字节码指令的长度?

我正在为 Java 创建一个静态分析工具,如果我可以从 .class 文件中的字节码中获取我正在分析的程序的一些信息,这些信息将更容易获得. 我不关心类文件中可能存在的每一个说明.例如,我可能只需要查看是否有任何 getfield 指令. 问题在于,由于每条指令的长度都是可变的,因此在一般情况下,我需要(在我的代码中)指定每个操作码的长度,然后才能确定(例如)getfield 指令开始 ..
发布时间:2022-01-16 12:30:36 Java开发

用于调试目的的命名(toString)Lambda 表达式

有时命名 lambdas 很有用.特别是当您将它们作为参数传递时. 一个非常简单的例子是 公共类 Main {公共静态无效主要(字符串[]参数){谓词p = nameIt("isNotEmpty", (s) -> !s.trim().isEmpty());也许打印(“你好",p);也许打印(“",p);}静态的无效可能打印(T s,谓词 pred){如果(pred.test ..
发布时间:2022-01-16 12:30:30 Java开发