问题内容: 我在Sun的JRE6中运行Tomcat6,每部署两个,我都会收到OutOfMemoryException:PermGen。我已经完成了对PermGen解决方案的搜索,并尝试了许多修复程序。没有工作。我读了很多有关Oracle JRockit的好东西,以及它的PermGen分配大小(与Sun的128M相比),虽然它不能解决问题,但我可以在PermGen异常之间重新部署100次,相比之下2
问题内容: 想象一下一个Java类,它具有您可以在类中找到的大多数功能。例如:它从另一个类继承,实现了几个接口,包括一些“静态最终”常量,一些最终常量,一些静态变量,实例变量,一个静态块,一个未命名的代码块(仅是{}中的代码),构造函数,方法等 当所涉及的类首次加载到JVM中时,该类的各个部分以什么顺序初始化或加载到JVM中?JVM中的调用堆栈在加载时是什么样的?假设这里只有一个类加载器在工作。
问题内容: 当我的应用启动时,我经常调用一种性能至关重要的方法。最终,它会被JIT编译,但是不会在解释器中运行一些明显的时间之后编译。 有什么办法可以告诉JVM我想从一开始就编译该方法(而无需使用诸如的东西来调整其他内部结构)? 问题答案: 我知道的唯一方法是标志,但是通常不建议使用该标志。它会在第一次运行所有类和方法时强制立即进行JIT编译。缺点是,由于启动JIT活动增加,您将看到性能在初始启动
问题内容: 我听说Java的优点是人们可以编写代码,为JVM编译代码,然后在任何地方运行它。每个人只需要为其平台使用JVM应用程序即可。 当然,它看起来类似于当前的情况,即每个人都有针对其平台的特定编译器。因此,优势并不能因此而得到解释。但是我想我明白了..问题一定是在Java情况下,您不能或不打算以特定于OS的方式直接访问真实机器。 我想这意味着在其他语言中,代码本身必须根据运行的计算机进行修改
问题内容: 有人可以列出字节码验证程序必须执行以确保程序正确性的主要任务吗?JVM规范中是否定义了一组标准的,最少的职责?我还想知道验证是否跨越其他阶段,例如加载和初始化。 问题答案: 这在JVM规范:第4.10章中指定。验证类文件。 该页面的大部分内容描述了类型安全的各个方面。为了检查程序是否是类型安全的,验证程序需要确定每个程序点在操作数堆栈中驻留哪些类型的操作数,并确保它们与相应指令期望的类
问题内容: 可以在调用“ java jar jar_name.jar”时指定要使用的JVM。我的机器上安装了两个JVM。我无法更改JAVA_HOME,因为它可能会破坏所有准备就绪的代码。 亲切的问候 史提芬 问题答案: 是的-仅显式提供java.exe的路径。例如: 对于正在运行的命令外壳,最简单的方法是: 例如,这是一个完整的会话,显示我的默认JVM,然后是路径的更改,然后是新的: 但是,这不会
问题内容: 如何在Java 6+中获取本地主机上正在运行的JVM的列表及其规格(即Java版本,正在运行的线程等)? Java API是否提供此类功能?有没有可以做到这一点的Java库? 问题答案: 您可以使用随jvm一起分发的命令行工具。不过,我不知道有任何普通的Java API。但是,JConsole可以满足您的要求,因此我看了一下其来源。确实很吓人,但是在四处查看时,我发现了对jVisual
问题内容: Java 8引入了可通过启动JVM启用String Deduplication的功能,该选项具有允许通过引用相似对象而不保留重复项来节省一些内存的选项。当然,它的有效性随程序的使用情况而不同,但取决于使用情况,但我可以肯定地说,对于大多数应用程序(如果不是全部),它可以被认为是有益的,这使我对以下几件事情感到疑惑: 为什么默认情况下不启用它?是由于重复数据删除相关的成本还是仅仅是因为G
问题内容: 如何在其他项目中重用Cucumber-JVM步骤定义来测试一些典型的Web操作。关键是我仅使用典型场景操作的“步骤定义”实现创建了一些Java项目,例如: 我想在其他项目(包括在classpath中)中重用这些定义,只是为了编写自己的简单方案。但是当我运行该场景时(作为JUnit测试),Cucumber无法找到“步骤定义”。当我尝试扩展“步骤定义”类时,它给我一个错误,我无法扩展“步骤
问题内容: 我在Windows XP Pro上使用Glassfish 3.0.1,JVM 1.6.0_21; 我不知道我的环境到底发生了什么变化,但是当我尝试部署企业应用程序(ejb模块+应用程序客户端模块)时,我立即获得了该堆栈跟踪信息。 除Glassfish之外,端口3820上没有任何运行。 这可能是什么原因?一些内部过程冲突? 关于如何进一步调试的任何提示? 编辑 这正是我尝试过的: 如您所
问题内容: 我如何从JAR(使用Windows BAT)启动程序的外部请求Java垃圾收集? 从Java代码中,我可以做到 运行JNLP发行版时,可以从“控制面板” / Java / …中打开此“ Java控制台”,并且此Java控制台提供了手动垃圾收集。 但是…当我从命令行/ bat运行jar时,java控制台似乎没有打开。短暂搜索无法找到帮助,也许有人在这里? 问题答案: 您可以使用jcons
问题内容: 我的JVM崩溃了,并且hs_err文件表明它在尝试加载类时崩溃了。特别是在尝试进行memcpy([libc.so.6 + 0x6aa2c] memcpy + 0x1c)时。我查看了.class文件,并能够确定正在加载的类。 但是,谁能告诉我是什么原因造成的,或者我如何确定更多原因?如果JVM内存不足,它不会抛出错误。非常感谢任何见解。 我包括了我的hs_err文件的摘录。 问题答案:
问题内容: JVM是否可以同时运行多个程序?如果是这样,怎么办?如果没有,为什么? 要运行程序,我们只需 但是我们可以使用同一个JVM实例来运行另一个程序吗? 问题答案: 答案取决于您对“程序”的定义。具有方法并以其开头的Java程序通常无法在同一JVM中运行,因为没有内置的资源或名称空间分隔。例如,如果两个程序使用同一库的冲突版本怎么办? 我们还提供了旨在共享JVM的应用程序,例如企业应用程序。
问题内容: 这是我的情况:我手头的一项任务需要大量内存。我没有足够的内存,无论我尝试什么(使用/ 3gb开关的Jrockit等),我都不能给JVM足够的内存,并且操作因异常而终止,告诉我我需要更多的堆空间。 有什么方法可以强制JVM使用操作系统的交换机制,以使其不会耗尽内存?这是Windows XP 32位 这将花费很多时间,但是我不在乎,我只需要完成此操作即可。 我用完了所有选项,并且无法控制此
问题内容: 我在许多不同的物理服务器上都有一个大型的分布式程序,每个程序都产生许多线程,每个线程在其操作中都使用许多通用资源池中的内容。 目标是在所有操作中平均利用池。有时,通过查看资源池上的快照来查看它在那一刻正在获得的片段,看起来并没有那么随机(实际上可能是,但是很难确定和找出来)。 有没有比它更好且表现同样好(至少没有差很多)的东西? 问题答案: 是基于,它基于线性同余生成器。这意味着它的随