草庐IT

jvm - 是否可以指定 JVM 故障转储的位置?

我们有一个使用JNI的桌面应用程序偶尔会导致JVM崩溃。幸运的是,JVM会生成一个hs_err_pidXXXX.log文件,这对于调试此类错误非常有用。然而,它似乎总是转到当前工作目录,从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的“日志文件位置”。是否可以为那些“故障转储”文件指定不同的位置?怎么办? 最佳答案 乔纳斯尽管HeapDumpPath适用于堆转储,但它不是您问题的答案。堆转储和jvm崩溃日志是两个独立的东西。要更改jvm崩溃日志的目标,请使用此选项运行java:-XX:ErrorFile=/path/to/fi

java - 在 Windows 7 上,Java JVM 如何设置 "user.home"系统属性?

我正在使用JRE1.7,我发现user.home系统属性非常不寻常。JVM是如何设置这个值的? 最佳答案 这个Java错误解释了如何:http://bugs.sun.com/view_bug.do?bug_id=4787931系统属性user.home设置为:读取注册表项的值:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders\Desktop采用该值的父路径,但不解析环境变量。示例:%userprofile%\Deskto

java - 调试工具在 Java 应用程序中挂起

我有一个Java应用程序有一半时间挂起,另一半时间JVM崩溃。有没有一种工具可以用来查看导致它挂起和/或崩溃的原因?我使用的是CentOS5.6 最佳答案 对于初学者,我建议JVisualVM.它与JDK一起提供,因此您只需在命令行中键入jvisualvm即可启动它。一旦启动,您就可以连接到正在运行的JVM,因此您应该能够连接到挂起的Java进程并检查堆栈转储中所有正在运行的线程以及堆的内容。其他有用的内置工具包括:jps列出正在运行的java进程的进程idjstack为指定JVM进程中的每个线程打印堆栈转储jmap为指定的JVM进

ES 查询用法

一,基本查询语法通过ES查询表达式(QueryDSL),可以实现复杂的查询功能,ES查询表达式主要由JSON格式编写,可以灵活的组合各种查询语句。提示:这里先介绍基本的语法结构,后续单独讲解具体的查询语法。1,查询基本语法结构GET/{索引名}/_search{"from":0,//返回搜索结果的开始位置"size":10,//分页大小,一次返回多少数据"_source":[...需要返回的字段数组...],"query":{...query子句...},"aggs":{..aggs子句..},"sort":{..sort子句..}}还支持一次搜索多个索引GET/order1,order2/_

java - 你能创建一个不以 Object 作为其基类的类结构吗

据我所知:Java中的每个类都继承了对象类的方法,而不需要指定这样做,这使得这个类如此独特和有趣。因此我想知道,在JVM内部,这个“规则”是在哪里指定的?是否可以以某种方式操纵此类,例如添加或删除方法或变量?是否可以独立于Object类创建并行的层次结构? 最佳答案 Object类(class)本身确实很特别。如果你看一下它在rt.jar中的实现在你的jre文件夹中,你会注意到它的大部分方法只是带有native的声明。修饰符。packagejava.lang;publicclassObject{privatestaticnative

java - 如何监控Windows 7中大内存页的JVM使用情况?

我正在尝试测量在Windows7HotSpotJVM中使用大内存页的性能增益。为此,我需要监控JVM内存使用情况以确保大页面得到实际利用。不幸的是,我无法找到实现这一目标的方法。以下是我所做的设置和试验的描述:环境设置我使用64位Windows7终极版进行测试。“在内存中锁定页面”Windows安全策略已启用,如JavaSupportforLargeMemoryPages中所述.我还通过如下运行javaversion命令验证了大页面功能是否已启用:java-XX:+UseLargePages-version我得到以下结果,这表明启用了大页面功能:javaversion"1.7.0_60

java - 整数性能 - x32 与 x64 jvm 相差 30-50 倍?

最近我遇到了一件非常奇怪的事情——一种方法在性能分析器下非常慢,没有明显的原因。它包含很少的long操作,但被调用得相当频繁-它的总体使用量约为总程序时间的30-40%,而其他部分似乎“更重”。我通常在x32JVM上运行非内存消耗型程序,但假设我遇到了64位类型的问题,我尝试在x64JVM上运行相同的程序——“实时场景”中的整体性能提高了2-3倍.之后,我为特定方法的操作创建了JMH基准测试,并对x32和x64JVM上的差异感到震惊-高达50倍。我会“接受”大约慢2倍的x32JVM(更小的字长),但我不知道30-50倍可能来自哪里。你能解释一下这种巨大的差异吗?回复评论:我重写了测试代

java - 如何调试 JVM 资源加载?

要调试JVM中的类加载,我们可以使用参数-verbose:class,但是...有人知道如何调试资源加载(例如属性文件)吗? 最佳答案 我想你需要看看使用分析器。或者使用仪器界面的东西。不确定它有多稳定,但是有BTrace,这是一种Java版本的DTrace。BTraceisasafe,dynamictracingtoolfortheJavaplatform.BTracecanbeusedtodynamicallytracearunningJavaprogram.BTracedynamicallyinstrumentstheclas

java - 什么基于 JVM 的脚本语言支持@WebService 在运行时创建服务?

我现在需要能够在运行时创建和公开Web服务。(即没有“javac”编译步骤)。是否有一种基于JVM的脚本语言对JAX-WS有很好的支持,这样我就可以用Java编写一个中央引擎,然后让脚本语言创建包含Web服务方法的片段(使用@WebService或@WebMethod注释)然后可以传递给http://docs.oracle.com/javase/6/docs/api/javax/xml/ws/Endpoint.html#publish(java.lang.String,java.lang.Object)如果可能的话,请举例说明如何正确执行此操作。有什么建议吗?

java - -Xms 和 -Xmx 标志是否保留机器的资源?

我知道JVM进程的-Xms标志是为了让JVM进程使用特定数量的内存来初始化它的进程。并且关于Java应用程序的性能,通常建议在启动应用程序时为-Xms和-Xmx设置相同的值,例如-Xms2048M-Xmx2048M。我很好奇-Xms和-Xmx标志是否意味着JVM进程保留特定数量的内存以防止其他进程在同一机器使用它。这样对吗? 最佳答案 Xmx仅保留虚拟地址空间。Xms实际上分配(提交)它但不一定预先设置它。操作系统对分配的响应方式各不相同。Windows确实允许您保留非常大的地址空间block(Xmx),但不允许过度使用(Xms)。