Articles of jvm

如何找出为什么JVM忽略在Linux上kill -15(SIGTERM)?

我正在kill -15 <PID>在我的工作jvm,它似乎完全被忽略。 环境是: Linux 2.6内核 jdk 1.6.0_20-x86-64 项目中没有提及sun.misc.SignalHandler 。 我唯一的(相当蹩脚的)线索是调用AbstractApplicationContext.registerShutdownHook()在main中。 JVM启动参数不包含与信号处理相关的任何内容。 日志中没有任何东西(DEBUG级别),没有什么打印到标准输出反应kill -15 。 如何找出什么原因会忽略SIGTERM?

关于JVM信号处理

我想禁用像CTRL_C发送的SIGINT信号,以及其他会终止JVM的信号。 我在这里阅读关于-Xrs选项 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html?cm_mc_uid=30731201786714525992590&cm_mc_sid_50200000=1461656557 但是它似乎对JVM /进程终止没有影响。 我启动了程序jar,像java -Xrs -jar avoid-signals.jar 。 我在Linux上。 有什么build议么?

从tomcat服务器的webapp调用java程序 – java程序在tomcat服务器的外面

我在tomcat服务器上有一个webapp。 另外我还有一个tomcat服务器之外的java程序 – 在linux机器的根目录下。 我需要调用外部的Java程序,并获得对Web应用程序的响应。 这是可能的吗? 请给我一个答案? 提前致谢。

为什么我的java进程使用内存(Linux RES)不断增加?

我有一个运行在linux(centos 6.3 x64)上的java(1.6 u25)进程,其中JAVA_OPTS =“ – server -Xms128M -Xmx256M -Xss256K -XX:PermSize = 32M -XX:MaxPermSize = 32M -XX:MaxDirectMemorySize = 128M -XX: + UseAdaptiveSizePolicy -XX:MaxDirectMemorySize = 128M -XX:+ UseParallelGC -XX:+ UseParallelOldGC -XX:GCTimeRatio = 39 -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -Xloggc:gc.log“,使用的java应用程序thrift 0.8.0 LIB; 每天运行TOP命令,java进程的RES值会不断增加(从80MB到1.2GB(启动应用程序一个月后)),但是看到jvm堆大小停留在100到200MB左右,看到GC日志约1〜 PSyoungGC每分钟2次,PSOld GC每天1〜2次,无内存泄漏。 那么,为什么使用mem的java进程会不断增加,并且大大超过了JVM设置? 我觉得java过程真的用mem会等于Xmx256M + MaxPermSize32M + MaxDirectMemorySize128M + JVM自己用过的mem = 416MB左右? 关系信息: Linux下Java的虚拟内存使用情况,使用的内存太多

如何在Linux JVM中使用本地的widows DLL

我有一个简单的API与原生函数(JNA)内的DLL文件,只计算一些math的东西。 我在一个JAVA应用程序中使用这个DLL,一切工作正常的Windows JVM。 问题是这个库将被用在Linux JVM中的Linux环境中,并且不会有* .so版本。 我读了几次,有一种方法来加载内存中的葡萄酒的DLL,并从那里使用它,但没有解释如何做到这一点。 有人可以证实或反驳这种方法对我来说。 如果这真的是一个可能的溶剂,请告诉我该怎么做? 编辑:可能是一个解决scheme, 如何从Linux上的Python调用葡萄酒DLL中描述? 我可以以某种方式使用ctypes? 问候wurmi

JVM崩溃:Java运行时环境检测到致命错误

我有一个tomcat崩溃在服务器上生成了hs_err_pid文件。在这里有一个有问题的框架 – > _wordcopy_fwd_dest_aligned + 0x54。 我search了所有类似的jvm崩溃的情况下,但无法find这个有问题的框架是什么意思。任何build议? # # A fatal error has been detected by the Java Runtime Environment: # # SIGBUS (0x7) at pc=0x00007f61087e3cb4, pid=18886, tid=140051814115072 # # JRE version: 6.0_37-b06 # Java VM: Java HotSpot(TM) 64-Bit Server VM (20.12-b01 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libc.so.6+0x89cb4] _wordcopy_fwd_dest_aligned+0x54 # […]

SIGSTOP和SIGTSTP会损坏JVM吗?

在Linux中有两个不同的信号可以用来暂停进程, SIGSTOP和SIGTSTP 。 两者都不由HotSpot虚拟机处理,因为SIGSTOP不能被捕获,而SIGTSTP 因为不被HotSpot处理 。 我想知道发送这两个信号是否安全,或者在不安全的情况下, JVM的哪个部分会受到影响(比如垃圾收集器)。 请注意,我并不关心在JVM上运行的程序可能存在的问题,我特别关心JVM的内部。 将STOP / TSTP发送到JVM是否安全?

挂起的JVM,“jstack -F pid”只能修复

JVM大师,需要你的帮助。 我有一个进入“暂停”状态的JVM /应用程序。 这听起来类似于这个较旧的线程: jstack -F如何影响正在运行的Java进程? …但我正在寻找任何进一步的build议/指导。 它的商业Java应用程序(当似乎闲置 – 半夜等)变得没有反应。 “杀-3”挂起,在控制台没有响应。 详细的GC日志将不会被写入。 'top'显示pid具有较低(几乎不存在)的CPU或内存使用率,较低的文件描述符等。 jvm无限期地保持这种状态(我们只剩下10个小时),直到… “jstack -F”被发布,它启动了JVM / app。 GClogging恢复,应用程序再次启动响应等。 问题已经发生了几个星期,每天接近30个独立的JVM(分布在10个RHEL 6.6虚拟机上)。 有时会在启动后的几个小时内发生。 在此期间,应用程序可能完全没有使用。 迄今为止,我们一直在使用适用于Linux x64的Oracle JVM 1.8.0_31。 刚刚升级到最新的公众(1.8.0_72),并会看到问题是否消失。 任何指针? 谢谢。

64位Linux上的进程内存和CPU限制?

可能重复: JVM内存和CPU使用的实际限制? 比方说,金钱不是一个限制因素,我想写一个运行在一台function强大的机器上的Java程序。 目标是让Java程序尽可能快地运行,而不必交换或转到磁盘 。 假设这台电脑有: 1 TB RAM(64个16GB DIMM) 64个处理器核心(8个8核心处理器) 运行64位Ubuntu 在JVM中运行的Java程序的单个实例可以利用这么多的RAM和处理器吗? 是否有任何可能会限制使用和效率的实际考虑因素? 硬件限制(例如,CPU可以在TB内存上一起工作)? OS进程(内存和线程)限制? JVM内存/堆的限制? JVM线程限制? 一个普通的可执行文件(即一个C程序)是否可以利用上述规格? 谢谢,盖伦

如果我安装JDK的新版本,运行Java进程会怎样?

我想知道如果在Debian机器上更新JDK,运行Java进程会发生什么。 其他系统的答案也可能是一样的,我只是想更加明确我的环境。 更新意味着更新的JDK将被安装在现有的JDK旁边,符号链接/usr/lib/jvm/default-java将被更改为新JDK的文件夹。 更新后的文件夹结构: /usr/lib/jvm/default-java – > /usr/lib/jvm/jdk1.7.0_79 /usr/lib/jvm/jdk1.7.0_21 # old version /usr/lib/jvm/jdk1.7.0_79 # new version 运行过程是否会受到这种变化的影响?