草庐IT

java - 为什么 JVM 返回退出状态代码 143?

在Windows2003上作为计划任务运行的Java应用程序崩溃,没有日志或任何有助于查明发生了什么的信息。唯一可用的信息是应用程序返回代码143(8F)。该错误代码是从计划任务日志中检索到的。有谁知道错误代码(143)代表什么?用户注销是否可能导致应用程序终止?谢谢, 最佳答案 143通常意味着应用程序因SIGTERM命令而终止。另见https://unix.stackexchange.com/questions/10231/when-does-the-system-send-a-sigterm-to-a-process但是,请注

java - 以编程方式(或替代方案)设置 Djava.library.path?

我希望以编程方式设置VM参数Djava.library.path。如果无法做到这一点,有什么替代方案(如果有的话)? 最佳答案 用这个方法很容易解决:publicstaticvoidaddLibraryPath(StringpathToAdd)throwsException{FieldusrPathsField=ClassLoader.class.getDeclaredField("usr_paths");usrPathsField.setAccessible(true);String[]paths=(String[])usrPat

java - 当 jvm 进程被杀死时,有什么方法可以执行一些 java 代码?

我们希望在JVM被手动终止时退出之前执行一些java代码或shell代码。我们的应用程序没有在容器中运行。我们需要使用Java代码本身或一些命令行工具自动监控它。 最佳答案 您可以使用Runtime.getRuntime().addShutdownHook()添加关闭Hook.一旦JVM的进程终止,这样的关闭Hook由JVM运行。但是,请注意,情况并非总是如此。JVM可能会在有机会触发其关闭Hook之前被杀死。这在javadoc中提到:Inrarecircumstancesthevirtualmachinemayabort,that

java - 如果小程序在浏览器的 JRE 中运行,为什么机器上需要 JRE?

小程序在浏览器的JRE中运行。这是否意味着您不必在计算机上安装JRE即可运行小程序? 最佳答案 “浏览器的JVM”是您安装在计算机上的JRE。浏览器通常不会自带,它们只会使用您已经安装在系统上的任何内容。也许您混淆了Java和JavaScript,它们实际上彼此完全无关。 关于java-如果小程序在浏览器的JRE中运行,为什么机器上需要JRE?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

java - 监控java线程执行的工具

我有一个在Tomcat服务器(Linux)上运行的JavaWeb应用程序。在生产环境中,我面临一些性能问题。以随机间隔运行tomcat的jsvc进程开始以90-100%的CPU运行。我无法找出此事件的触发因素。服务器是四核系统。内存消耗不代表任何异常。我如何监控应用程序中的哪个线程(应用程序堆栈跟踪)导致了问题?我正在检查jconsole和PSIProbe,但两者都没有给出应用程序内部哪个线程导致CPU使用率异常的任何详细信息。 最佳答案 一个相对简单的方法来做到这一点(这可能适用于您的情况也可能不适用-取决于行为发生的时间):当您

java - Sun JDK 能否在 JVM 崩溃时生成核心/堆转储文件?

当JVM崩溃时,是否有生成核心/堆转储文件的方法?由于这些文件通常非常有助于找出代码中的错误。 最佳答案 使用以下JVM选项:-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath="/tmp"JVM会将堆中的内容转储到指定目录中的文件中。请注意,这仅在抛出OutOfMemoryError时发生,因为如果JVM由于其他原因而崩溃,则实际上不需要转储。编辑:“boolean选项用-XX:+打开,用-XX:-关闭。”docs 关于java-SunJDK

java - 有没有一种方法可以仅在 Java 中从指针创建直接的 ByteBuffer?

或者我是否必须有一个调用env->NewDirectByteBuffer(buffer,size)的JNI辅助函数? 最佳答案 我所做的是创建一个普通的DirectByteBuffer并更改它的地址。Fieldaddress=Buffer.class.getDeclaredField("address");address.setAccessible(true);Fieldcapacity=Buffer.class.getDeclaredField("capacity");capacity.setAccessible(true);By

java - 如何获取正在运行的 Java VM 的名称?

如何找到当前运行的java虚拟机名称?我想从javaAPI获取它。谢谢 最佳答案 由于您没有真正指定要查找的内容,请查看这些系统属性:“java.vm.name”“java.home”“java.version”“java.vendor”“java.specification.vendor”像这样:System.out.println(System.getProperty("java.vm.name"));System.out.println(System.getProperty("java.home"));System.out.p

【面试大全-JVM】必备JVM

知识汇总需要了解内存模型各部分作用,保存哪些数据类加载双亲委派加载机制,常用加载器加载哪些类型的类GC分代回收的思想、不同垃圾回收算法的思路性能调优及常有的参数作用,参数调优的依据和工具分析问题的使用方法。执行模式编译器优化Java内存模型栈(线程独占):又称为方法栈,线程私有的,与线程同一时间创建,线程执行方法都会创建一个栈阵,用来存储局部变量表,调用方法时执行入栈,方法返回时执行出栈。,-Xss参数可以设置虚拟机栈大小。本地方法栈:与栈类似,也是用来保存执行方法的信息,执行Java方法是使用栈,实现Native方法是使用本地方法栈C语言程序计算器:保存当前线程执行的字节码位置,每个线程工作

java - Java 字节码在同一版本的 Java 的不同更新中是否兼容?

此问题与此处讨论的其他主题相关:IsJavabytecodecompatiblewithdifferentversionsofJava?但在这种情况下,想知道兼容性是否在同一版本中但在不同的更新中得到保留。例如,编译器在1.6.0_14版本上生成的字节码是否与1.6.0上的JVM兼容?代码运行的很愉快,但我不知道是否有任何意外出现的问题。问候。 最佳答案 是的。字节码只改变主要的点发布。更新(_XX)版本是基于API和工具的错误修复、性能提升和对非标准命令开关的更改。更新版本不会破坏API或更改类文件版本。1)BahforSuns版