问题内容: 我希望在不停止应用程序的情况下分析Java应用程序。我可以在应用程序运行时以某种方式添加Javaagent吗? 问题答案: 根据java.lang.instrument软件包的文档,应该是可能的。 VM启动后启动代理 一个实现可以提供一种机制,可以在VM启动之后的某个时间启动代理。有关如何启动的详细信息是特定于实现的,但通常应用程序已启动并且其主要方法已被调用。在虚拟机启动后实现支持启
问题内容: 调试时,在Eclipse中对象值附近显示一个对象ID。 例如:28332是会话对象的ID。另一个示例:显示在“调试”面板中。这些ID既不是哈希码,也不是。 有人知道吗-如何获取对象的ID? 问题答案: 我假设它们在内部具有,为每个对象分配一个唯一的(但无意义的)整数。这应该在Eclipse调试器的内部(而不是对象具有的特殊ID)。您在问如何达到目标吗? 编辑 :我会这样设置断点(请注意
问题内容: Java SE 6中Sun的JVM的默认最大堆大小是多少(即等效于设置-Xmx)? 貌似对Java SE 5与服务器级计算机,它的 小于物理内存的1/4或1GB。 额外的问题:对于IBM的JVM,您可以提出要求 您可以类似地询问Sun的JVM吗? 编辑 : 我使用Runtime.getRuntime()。maxMemory来确认min(物理内存/ 4,1G),这在Sun文档中已引用。
问题内容: 在此Oracle页面Java HotSpot VM Options上 ,它列出为可用,并且默认情况下处于启用状态。但是,在Java 6更新29中,默认情况下它处于关闭状态,而在Java 7更新2中,它报告警告。 有人知道删除此选项的想法吗? 在Java 6 update 29中,使用时,此示例花费了4.541秒,而启用了选项则花了5.206秒关闭了它。很难看出它会影响性能。 注意:Ja
问题内容: 我读到每个应用程序都在自己的JVM中运行。为什么会这样呢?他们为什么不让一个JVM运行2个或更多应用程序? 我说的是通过公共静态void main(String [])方法启动的应用程序…) 问题答案: (我假设您正在谈论通过方法启动的应用程序…) 理论上,您可以在JVM中运行多个应用程序。实际上,它们可以以各种方式相互干扰。例如: JVM具有一组System.in/out/err,一
问题内容: 我对JVM内存管理(至少对于SUN的内存管理)有疑问。 我想知道如何控制JVM将未使用的内存发送回OS(以我的情况为Windows)的事实。 我编写了一个简单的Java程序来说明我的期望。使用- Dcom.sun.management.jmxremote选项运行它,以便例如也可以使用jconsole监视堆。 使用以下程序: 一旦第一个GC完成(预期),内部堆就释放了,但是内存仅从第三个
问题内容: 我多次听到Java妨碍JIT(即时)编译的情况,其可跨平台移植的字节码被JVM“解释”。但是,我真的不知道字节码是什么,以及JVM在Java语言体系结构中的实际含义。我想进一步了解他们。 问题答案: JVM(Java虚拟机)具有与真实计算机一样的指令集。给该指令集的名称是Java字节码。在Java虚拟机规范中对其进行了描述。其他语言在执行之前会被翻译成字节码,例如ruby和python
问题内容: 当我从eclipse运行代码时,有没有一种方法可以指定默认的JVM参数,而不是为每个run / debug / etc配置一遍又一遍地指定相同的参数? 问题答案: 是的,右键单击该项目。然后点击。您可以在框中的选项卡中更改传递给JVM的参数。 然后,可以在运行项目时将该配置用作默认设置。
问题内容: 引用http://sites.google.com/site/gson/gson-design- document : 为什么Gson中的大多数课程都标记为期末考试? 尽管Gson通过提供可插入的串行器和反序列化器提供了相当可扩展的体系结构,但Gson类并不是专门设计为可扩展的。提供非最终类将允许用户合法地扩展Gson类,然后期望该行为在所有后续修订版中均有效。我们选择通过将类标记为f
问题内容: 通常,默认实现 是内存中对象分配地址的某些功能(尽管 JLS 并未强制执行此功能)。既然VM会在内存中分流对象,为什么 在对象的生命周期内返回的值从不改变? 如果这是一次“一次性”计算(对象的计算一次,并存放在对象标题或其他内容中),那么这是否意味着两个对象可能具有相同的对象(如果它们恰好是第一次分配给对象)内存中的相同地址)? 问题答案: 现代JVM将值保存在对象标头中。我认为,通常
问题内容: 我试图找出是否有一种方法可以从正在运行的Java进程中确定JVM启动属性。具体来说,我试图找出存储- Xmx(最大堆大小)和-XX:MaxPermSize之类的参数的位置。我正在运行Sun的1.6 jvm。 如果您想知道为什么要执行此操作,则有许多JVM Web服务器可能已正确配置,也可能未正确配置,因此我想将其添加到启动代码检查中。对于我来说,签入到处部署的一段Java代码比手动查找
问题内容: Sun的规范JVM实现对字节码进行了一些相当复杂的优化,以在代码运行几次后获得接近本机的执行速度。 问题是,为什么没有将此编译后的代码缓存到磁盘以供以后使用同一功能/类时使用? 就目前而言,每次执行程序时,JIT编译器都会重新启动,而不是使用代码的预编译版本。当本质上解释字节码时,是否添加此功能不会大大提高程序的初始运行时间? 问题答案: 我不求助于@MYYN发布的链接的’n’past
问题内容: 什么是HotSpot?它与JVM和OpenJDK有什么关系?是图书馆吗?它到底是做什么的? 另外,OpenJDK和HotSpot有什么区别? 问题答案: Java虚拟机规范中明确说明了什么是Java虚拟机 根据定义,JVM是虚拟机,即模拟真实计算机执行功能的软件计算机。就像真实的机器一样,它具有指令集,虚拟计算机体系结构和执行模型。它能够运行用该虚拟指令集编写的代码,非常类似于真实机器
问题内容: 当存在具有不同版本的重复JAR时,该行为非常不一致。有人知道JVM如何处理重复项吗? 问题答案: 类加载器按顺序搜索类路径,并使用找到的第一个匹配类。
问题内容: 似乎只有少数JVM是Java实时规范(RTSJ)的实现。Sun / Oracle Java Real- TimeSystem的价格超过6000美元,IBM的实时WebSphere的价格超过7000美元,因此许多Java开发人员可能永远都没有机会使用它们中的任何一个。甲骨文的JRockit似乎是一个免费的实时Java实现,具有可预测的确定性行为,尽管我不确定,因为他们的文档非常注重营销语