Tag: jvm

如何跟踪在jvm中加载和销毁类的时间?

如何在jvm中加载和销毁类时跟踪? 是否有任何jvm公开的回调方法?

性能说明:预热后代码运行速度较慢

下面的代码运行完全相同的计算3次(它没有做太多:基本上添加从1到100米的所有数字)。 前两个块的运行速度比第三个块快约10倍。 我已经运行了这个测试程序超过10次,结果显示非常小的差异。 如果有的话,我希望第三个块运行得更快(JIT编译),但典型的输出是: 35974537 36368455 296471550 有人能解释一下发生了什么吗? (为了清楚起见,我不是要在这里修改任何东西,只是想更好地了解发生了什么) 注意: 程序期间没有运行GC(使用-XX:+PrintGC ) 使用Oracle JDK版本1.6.0_30,1.7.0_02和1.7.0_05进行测试 还使用以下参数进行测试: -XX:+PrintGC -Xms1000m -Xmx1000m -XX:NewSize=900m =>相同结果 它将块放入循环中,所有运行都很快 如果将块提取到方法,则所有运行都很快(无论方法被调用3次还是循环都没有区别) public static void main(String… args) { //three identical blocks { long start = System.nanoTime(); CountByOne c = new CountByOne(); int sum = 0; for (int i = 0; i < 100000000; i++) { […]

如何确保JVM中只有一个类实例?

我正在开发一个设计模式,我想确保这里只是Java虚拟机中一个类的一个实例,通过一个点来汇集对某些资源的所有请求,但我不知道它是否可行。 我只能想到一种计算类实例的方法,并在创建第一个实例后销毁所有实例。 这是一种正确的方法吗? 如果没有,还有其他方法吗?

我可以自动重启tomcat jvm内存exception

我知道这不是“最佳实践”,但我想知道如果我部署的应用程序抛出一个outofmemoryexception我是否可以自动重启tomcat

使用javac和javax.tools.JavaCompiler有什么区别?

Maven编译器插件文档说明 : Compiler Plugin用于编译项目的源代码。 从3.0开始,默认编译器是javax.tools.JavaCompiler(如果您使用的是java 1.6)并且用于编译Java源代码。 如果要使用javac强制插件,则必须配置插件选项forceJavacCompilerUse 实际上,当我们的构建中没有指定forceJavacCompilerUse会出现一些构建错误,例如当代码引用com.sun. 包(遗产,我们知道这是一个坏主意…) 这两种编译模式与maven有什么区别? 是否应该知道任何产出差异?

JVM内存管理和垃圾收集书?

任何人都可以建议一本书 (或任何其他来源),它将彻底揭示JVM内存管理和垃圾收集的内部结构 (优化,工作,循环引用,pecularities,讨论各种JVM impls ……)? [到目前为止我发现的是单独的文章,专门讨论各个方面,但没有重要的内容:)。 Hotspot实现的一些好材料就在这里 。 ] 非常感谢您给予的任何建议。

针对大型应用程序的JVM性能调优

默认JVM参数不是运行大型应用程序的最佳选择。 来自在真实应用程序上进行调整的人的任何见解都会有所帮助。 我们在32位Windows机器上运行应用程序,默认使用客户机JVM。 我们添加了-server并将NewRatio更改为1:3(更大的年轻一代)。 您尝试过并发现有用的任何其他参数/​​调整? [更新]我正在谈论的特定类型的应用程序是一个很少关闭的服务器应用程序,至少需要-Xmx1024m。 还假设已经分析了应用程序。 我正在寻找仅在JVM性能方面的一般指导原则。

杀手设施或场景会使另一个JVM成为比Sun JVM更好的选择吗?

对于Java SE,有几个JVM可用于在x86上的生产中运行: IBM J9 Oracle JRockit – http://www.oracle.com/technology/products/jrockit/index.html Apache Harmony – http://harmony.apache.org/ OS X中的一个(如果是Mac)似乎是带有Aqua Swing的Sun. OpenJDK的 加上一些在服务器上运行的自定义产品: Azul – http://www.azulsystems.com/ Google App Engine Java – http://code.google.com/intl/da/appengine/docs/java/overview.html 其他平台: Sun Solaris JVM – 比x86更好的可伸缩性? (编辑)用于Java的GNU编译器 – http://gcc.gnu.org/java/ – 可以在多个平台上编译为本机代码。 Sun JVM与jvisualvm程序具有明显的优势,该程序允许运行时检查运行代码。 是否有任何其他JVM的技术优势可能使其成为开发和/或生产的更好选择? 换句话说,是否有一个杀手级设施或场景可以在另一个JVM中进行任何时间/精力/金钱投入? (如果它们是一个不错的选择,请另外建议其他JVM)。

将clojure / scala repl附加到正在运行的JVM

我有一个在Sun java 6 JVM中在tomcat下运行的java Web应用程序。 有没有办法将scala或clojure REPL附加到正在运行的JVM? 一旦webapp启动并运行,就会在正在运行的VM中设置要进行调用的上下文。 因此,这对于为增量,探索性开发和调试调用任意java方法调用非常有用。

Java – 二进制代码与ByteCode相同吗?

在Java中,“二进制代码”是否与“Java字节码”相同? 这是Java中的流程吗? Java文件(.java) – > [javac] – > ByteCode文件(.class) – > [JVM / Java解释器] – >运行它(首先将其转换为特定于机器的二进制代码) 谢谢!