草庐IT

JVM指令手册

全部标签

java - 我可以强制生成 JVM 崩溃日志文件吗?

JVM崩溃的日志文件包含各种对调试有用的信息,例如加载的共享库和完整的环境。我可以强制JVM以编程方式生成其中之一吗?通过执行崩溃它的代码或其他方式?或者以其他方式访问相同的信息? 最佳答案 您可以尝试抛出OutOfMemoryError并添加-XX:+HeapDumpOnOutOfMemoryErrorjvm参数。这是1.6中的新工具,也是McDowell建议的其他工具。http://blogs.oracle.com/watt/resource/jvm-options-list.html

java - 以编程方式填充 JVM 永久代 (PermGen) 内存区域

我需要测试我开发的一些JMX监控脚本,特别是我想验证我对PermGen区域的监控是否正常工作。因此,为了对此进行测试,我希望能够运行一些代码来加载大量类,以便使用PermGen。我目前的计划是编写一个脚本来生成prefix(1..n).java编译它们,然后按提示运行:for(inti=1;i是否有更优雅的解决方案来实现这一目标? 最佳答案 好的,看来String.intern()可以解决问题。这是我发现的一个实现。也归功于Gareth:publicstaticvoidmain(String[]args)throwsClassNot

java - 如何分析JVM崩溃文件hs_err_pidXYZ.log

在Eclipse和Tomcat(wtp)中处理webapp时,tomcat崩溃并创建一个文件:hs_err_pid20216.log我尝试使用eclipseMAT来分析文件,但MAT无法将文件识别为它可以处理的文件,我也尝试了DAT,结果是一样的。它不会显示在打开的文件对话框中。这是什么类型的文件?我应该用什么来分析它?我是否必须更改此文件以便这些工具能够解析它。日志文件以GitHubgist形式提供。更新:有关如何处理hs_err_pidXYZ.log文件的更多信息,请参阅@DanCruz的回复。出于好奇,崩溃的原因是jackson被循环关系(双向一​​对多)弄糊涂了,但这是另一个故

java - 字节码指令和处理器操作之间的关系

Java规范保证原始变量赋值始终是原子的(long和double类型除外。相反,Fetch-and-Add对应于著名的i++增量操作的操作将是非原子的,因为会导致读取-修改-写入操作。假设这段代码:publicvoidassign(intb){inta=b;}生成的字节码是:publicvoidassign(int);Code:0:iload_11:istore_22:return因此,我们看到分配由两个步骤(加载和存储)组成。假设这段代码:publicvoidassign(intb){inti=b++;}字节码:publicvoidassign(int);Code:0:iload_1

Git 指令深入浅出【2】—— 分支管理

Git指令深入浅出【2】——分支管理分支管理1.常用分支管理指令2.合并分支合并冲突合并模式3.实战演习分支管理1.常用分支管理指令#查看本地分支gitbranch#查看远程分支gitbranch-r#查看全部分支gitbranch-aHEAD指向的才是当前的工作分支#查看当前分支的提交记录gitlog--graph--abbrev-commit#--abbrev-commit仅显示HA-1校验和的前几个字符的提交ID常用分支名master主分支用于生产环境release预发布分支,用于测试环境、预发布环境develop开发分支,用于开发环境feature需求开发分支,用于本地hotfix紧急

java - JVM上的内存分配是无锁的吗

当你在Java中做一个newObject()时,jvm是使用无锁算法分配内存还是需要加锁?在这种情况下,我指的JVM是HotspotVM。据我所知,它只需要递增一个指针即可超快地分配内存。但是在多线程的情况下,这个增量是否需要加锁或者CAS? 最佳答案 如前所述,默认是使用tlab。thisglossary中描述了行为如下TLABThread-localallocationbuffer.Usedtoallocateheapspacequicklywithoutsynchronization.Compiledcodehasa"fast

java - Maven - 使用 JDK 7 为 JVM 5 编译

我已经尝试让它工作了一段时间,但还没有成功。我想用指向JDK7的JAVA_HOME运行,但我想为JVM5编译一个项目。我已经通读了documentation,我找到了similarposts在SO上,但它们似乎都不适用于我的设置。我首先尝试仅设置target和source但出现错误:org.apache.maven.pluginsmaven-compiler-plugin1.51.5[ClassName]isnotabstractanddoesnotoverrideabstractmethodgetParentLogger()inCommonDataSource据我所知,该类已在JDK

java - 如何调整 jvm 使其崩溃而不是英勇地 GC 直到 100% CPU 利用率?

我们有一个JVM进程,它很少将CPU占用100%,看起来(根据visualgc)堆几乎耗尽。我们的假设是该进程正在英勇地进行GC,导致CPU峰值,这会影响整个系统的整体健康状况(由其他JVM执行不同的事情组成)。这个过程并不关键,可以重新开始。有没有一种方法可以通过启动它的命令行来调整JVM,使其落在自己的剑上,而不是继续进行GC并导致整个盒子受到影响?值得注意的是,我们没有收到OOMException,因此堆并没有完全耗尽,但我们认为只是勉强没有耗尽。或者,一些东西可以让我们了解JVM中的什么实际上以确认/否定我们的GC假设的方式使用CPU? 最佳答案

java - JVM 在 RHEL 5.2 的压力下崩溃

在4到24小时4小时到8天后,我在(当前最新的)tomcat6.0.24上运行Web应用程序时,(当前最新的)jdk1.6.0.18意外崩溃压力测试(30个线程以600万次/天的浏览量访问应用程序)。这是在RHEL5.2(Tikanga)上。崩溃报告位于http://pastebin.com/f639a6cf1崩溃的一致部分是:正在抛出一个SIGSEGV在libjvm.so上eden空间总是满的(100%)JVM使用以下选项运行:CATALINA_OPTS="-server-Xms512m-Xmx1024m-Djava.awt.headless=true"我还使用http://memt

java - JVM 热插拔

什么是JVM热插拔?许多定义表明此功能允许代码在调试期间动态更新。并且热插拔等一些限制仅限于更新方法体,并且尝试向类中添加方法和字段不会成功。谁能用代码解释一下。 最佳答案 这意味着您可以在调试session期间对代码进行某些更改,并使这些更改立即生效,而无需重新启动应用程序。在某些情况下,这是一个非常方便的功能。但是,您通常会限制哪些类型的代码更改可以热交换到正在运行的应用程序中。限制的确切性质取决于您的工具链。 关于java-JVM热插拔,我们在StackOverflow上找到一个类