Tag: jvm

什么使热部署成为“难题”?

在工作中,我们遇到了“ PermGen内存不足 ”exception的问题,团队负责人认为这是JVM中的一个错误,这与代码的热部署有关。 他没有解释很多细节,他指出,热部署是一个“难题”,即使.NET也不这么做。 我发现很多文章都是从鸟瞰angular度解释热点部署,但总是缺乏技术细节。 任何人都可以给我一个技术解释,并解释为什么热部署是一个“难题”?

Java是否保证Object.getClass()== Object.getClass()?

我在这里确实是指身份平等。 例如,以下总是会打印真实的 ? System.out.println("foo".getClass() == "fum".getClass());

调用本地方法时,JVM必须做什么?

当调用一个声明为native的Java方法时,JVM运行时必须执行的常规步骤是什么? HotSpot 1.8.0 JVM如何实现JNI函数调用? 涉及哪些检查步骤(例如,返回后的未处理exception?),JVM要执行哪些簿记(例如,本地引用registry?)以及控制在本地Java方法调用之后的位置? 如果有人能够提供本地HotSpot 1.8.0代码的入口点或重要方法,我也将非常感激。 免责声明:我知道我可以自己阅读代码,但事先的解释有助于快速find我的代码。 另外,我发现这个问题值得Googlesearch。 ;)

JFrame.dispose()vs System.exit()

这两个方法有什么区别 – System.exit()和JFrame.dispose() ? 如果我们想要在单击button时closuresJava Swing应用程序,应该使用哪种方法?

Java – 如何加载同一类的不同版本?

我已经阅读了很多关于Java类加载器的内容,但到目前为止,我还是无法为这个简单的问题find答案: 我在jars v1.jar和v2.jar中有两个版本的com.abc.Hello.class 。 我想在我的应用程序中使用两者。 这样做最简单的方法是什么? 我并不期望这么简单,但是沿着这些方向的东西会很棒: Classloader myClassLoader = [magic that includes v1.jar and ignores v2.jar] Hello hello = myclassLoader.load[com.abc.Hello] 而在另一个class上: Classloader myClassLoader = [magic that includes v2.jar and ignores v1.jar] Hello hello = myclassLoader.load[com.abc.Hello] 我想避免使用OSGi。

什么是64位JVM最大的堆大小?

在32位系统中使用-Xmx设置的理论最大堆值当然是2^32字节,但通常(请参阅: 了解最大JVM堆大小 – 32位与64位 )不能使用全部4GB。 对于在64位机器上运行在64位操作系统上的64位JVM,除了2^64字节或16 EB字节的理论极限之外是否还有其他限制? 我知道,由于各种原因(主要是垃圾收集),过大的堆可能不是明智的 ,但从阅读有RAM的服务器的angular度来看,我想知道什么是可能的 。

两个JVM之间的共享内存

在JAVA中,有两种JVM(运行在同一台物理机器上)使用/共享相同的地址空间吗? 假设JVM1中的生产者将消息放入特定的预定义内存位置,JVM2上的消费者是否可以在知道要查看哪个内存位置的情况下收回消息?

主线程何时停止在Java中?

我读了这个声明: 主线程必须是完成执行的最后一个线程。 当主线程停止时,程序终止。 这是真的吗? 我也来了解“即使主线程序死机程序继续运行”。 据我的理解:当你启动一个程序,JVM创build一个线程来运行你的程序。 JVM创build一个用于运行程序的用户线程。 这个线程被称为主线程。 该类的主要方法是从主线程调用。 如果程序从主线程产生新的线程,它会停止,直到最后一个线程死亡。 哪一个是真的?

“虚拟机初始化时发生错误; 使用-Xmx3G无法为对象堆预留足够的空间

首先,我有一个8GB的内存盒,所以我怀疑总内存是问题。 此应用程序在6GB或更低的机器上运行良好。 我试图在Eclipse的运行configuration中的“虚拟机参数”下使用-Xmx3G保留3GB的空间。 每次我尝试保留超过1500MB,我得到这个错误:“虚拟机初始化时发生错误; 使用-Xmx3G无法为对象堆预留足够的空间 这里发生了什么?

读取Java JVM启动参数(例如-Xmx)

我试图找出是否有一种方法来确定在运行的Java进程中的JVM启动属性。 具体来说,我试图找出参数,如-Xmx(最大堆大小)和-XX:MaxPermSize被存储。 我正在运行Sun的1.6 jvm。 如果你想知道为什么要这样做,我有一些JVM的networking服务器,可能或可能不正确configuration,我想添加到启动代码检查。 检查一段随处可用的java代码比手动查找并检查所有的jvm启动文件要容易得多。 现在,jvmconfiguration文件的好坏不是我们构build过程的一部分,也不是源代码控制。