草庐IT

JVM指令手册

全部标签

十三、JVM调优工具及案例分析

在面试的时候经常会问到JVM调优问题    1、线上环境,如果内存飙升了,应该怎么排查呢?    2、线上环境,如果CPU飙升了,应该怎么排查呢?内存飙升首先要考虑是不是类有很多,并且没有被释放;使用jmap可以检查出哪个类很多CPU飙升,可以使用Jstact来找出COU飙升的原因。下面就来研究Jmap,Jstact的用法。目标:         1、Jmap、Jstack、Jinfo详解    2、JvisualVM调优工具实战    3、JVM内存或CPU飙高如何定位    4、JSta令预估JVM运行情况    5、系统频繁FULLGC导致系统卡顿实战调优    6、内存泄露到底是怎么回

java - 当 Java 更新到 OpenJDK 11 时,Windows 上的 Jenkins 返回不受支持的 JVM 错误

我一直在测试在WindowsJenkins服务器上将OracleJava8更新为RedHatOpenJDKJava11,但我似乎遇到了困难。我的Jenkins实例指出Java11不受支持,在我更新JENKINS_HOMEJRE文件后返回以下错误:“我们检测到Jenkins不支持您的JVM。这是由于Jenkins使用的库之一的限制,即XStream。有关更多详细信息,请参阅FAQ。”我采取的步骤:1.停止并禁用Jenkins服务2.从控制面板卸载OracleJava8191并删除Java\jdk1.8.0_191中剩余的程序文件3.将RedHatOpenJDK11.0.4msi安装到Ja

java - 通过 CreateProcess() 启动的 JVM 丢失类路径库

我使用CreateProcess(或_spawnv())从WindowsVC++6程序启动以下命令行(进程):java-cpc:\dir\updates.jar;c:\dir\main.jar主和updates.jar中的类更新(覆盖main.jar中的一些)未被读取或找到。好像找不到或无法读取updates.jar库。如果我从快捷方式或正确的命令行启动同一行,一切都会找到并正确执行。如果我从命令行启动JVM,保持运行,然后启动可执行stub(如上),那么一切正常。(这使得问题看起来像是文件权限问题)。任何见解将不胜感激!--爱德华 最佳答案

windows - 如何从 PE 文件的 .text 段中的数据中消除指令歧义?

我有一个PE文件,我尝试反汇编它以获取它的说明。但是我注意到.text段不仅包含指令,还包含一些数据(我使用IDA注意到这一点)。这是示例:.text:004037E4jmpds:__CxxFrameHandler3.text:004037EA;[00000006BYTES:COLLAPSEDFUNCTION_CxxThrowException.PRESSKEYPAD"+"TOEXPAND].text:004037F0;.text:004037F0movecx,[ebp-10h].text:004037F3jmpds:??1exception@std@@UAE@XZ;std::exce

windows - 如何并行运行批处理文件中的指令/命令?

如何并行运行批处理文件中的指令/命令?批处理文件内容:每行调用一个进程例如StartMyDay.Batcalldevenv.execallchrome.execallcommunicator.execallVirtualBox.exe 最佳答案 使用start命令,但如果需要,添加文件的路径。start""devenv.exestart""chrome.exestart""communicator.exestart""VirtualBox.exe 关于windows-如何并行运行批处理文

java - 如何找到创建我的 JVM 的特定 java.exe 的位置?

不想找系统的JAVA_HOME。我不想查找系统变量。我需要从它启动的.jar中确切知道独立(捆绑的JRE)的位置。示例:用户使用捆绑的.jre安装应用程序,并启动它。该程序不仅需要确定当前运行目录,还需要确定与其捆绑在一起的java.exe的位置。我可以根据当前运行目录的相对路径做出假设,但我更喜欢一种绝对确定当前运行的java.exe的完整路径的方法。我不认为这是一个重复的问题,因为我找不到任何未通过引用系统或用户配置文件java_home来回答的实例(或答案)。我认为这将是一项简单的任务,但到目前为止还没有找到答案。 最佳答案

windows - 计算机编程艺术 MIX MUL 指令

我正在学习计算机编程艺术(Knuth的)MIX指令。我试图理解MUL1000指令如下:|+|1|1|1|1|1|[rAbefore]|+|1|1|1|1|1|[Cell1000]|+|0|1|2|3|4|[rAafter]|+|5|4|3|2|1|[rXAfter]有没有办法知道为什么rA和rX有那个值?请帮忙!Imageoftheparticularpageinthebook 最佳答案 MIX的乘法指令定义为,seehere:MULADDR,i(0:5)-->(rA,rX):=rA*memory[ADDR+rIi];这意味着累加器

java - 32 位操作系统上的 JVM 堆大小

我正在使用32位win.7和Eclipse。还有4GB内存。我想为我的Java应用程序分配大约3GB的最大堆大小,但我可以通过VM参数-Xmx1056m分配最大1.5GB。我该怎么办?如果我安装64位win.7。然后它可以为我的应用程序分配3GB堆大小吗? 最佳答案 常规的32位Windows进程只能寻址2GB内存,即使您有更多可用内存也是如此。您可以找到不同Windows版本的内存限制here.由于VM需要的内存不仅仅是堆,所以最大堆大小将略小于进程可用的最大内存。通常,对于32位WindowsVM,您可以将堆调整到大约1.6GB

java - 将类注入(inject) JVM 并与现有类交互

我想将我的Java类注入(inject)到Windows上现有的Java应用程序中。我找到一篇描述使用CreateRemoteThread的方法的文章-java-code-injection-via-winapis但尚不清楚注入(inject)的类是否可以“连接”现有类并调用它们。有人知道这是否可行吗?JNI中是否有可用于搜索和获取对已运行类的引用的函数? 最佳答案 我敢肯定还有其他复杂的方法可以做您想做的事(例如使用javainstrumentationapi)。然而,可能有更简单的方法。找到应用程序的主类将类反编译成java代码

windows - 如何在不使用 GUI 的情况下在 windbg 中的暂停指令后获取堆栈跟踪?

通常我在我的C++代码中插入一个assert(0);,启动Windbg,按F5,输入k然后我得到一个堆栈跟踪。然后我必须通过鼠标复制粘贴它并退出。但我想将其自动化。有什么方法可以检索堆栈跟踪并将其写入文本文件而无需手动使用GUI? 最佳答案 首先,您可以像这样使用.logopen将gui的输出写入文本文件.logopenc:\dump\myLog.txt这会将所有内容转储到此位置,调用.logclose以在一行中关闭日志:.logopenc:\dump\myLog.txt;k;.logclose其次,如果你真的不想使用gui,还有命