如何诊断 JAVA进程 是否存在 物理内存溢出

pmap -x 3317

Address Kbytes RSS Dirty Mode Mapping
0000000041b5d000 4 0 0 ----- [ anon ]
0000000041b5e000 256 40 40 rwx-- [ anon ]
0000000041ba4000 4 0 0 ----- [ anon ]
0000000041ba5000 10240 64 64 rwx-- [ anon ]
00000000425a5000 1048576 1048576 1048576 rw--- [ anon ]
00000000825a5000 1048576 0 0 ----- [ anon ]
0000003173400000 112 104 0 r-x-- ld-2.5.so
000000317361c000 4 4 4 r---- ld-2.5.so
000000317361d000 4 4 4 rw--- ld-2.5.so
0000003173800000 1340 620 0 r-x-- libc-2.5.so

0

1个回答

你使用 jdk自带的性能分析工具试试看, 个人经验: 就看占用内存是不是一直在增长 他有一条曲线

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
深入理解JVM之内存区域与内存溢出 诊断工具
与你的问题不同,我认为软件工程主要是用来解决问题的。有些博客认为“每个小孩都应该学习编程”,“你认为学数学只是玩玩而已?如果你有看过我的HTML5调试器的话,你会发现我是一个程序员,但我做的工作远不止数学这些”。n 上面两者都同意一个观点,软件工程不只是用计算机语言写的一些只言片语。软件解决的问题诠释了程序员的价值。nn解决问题的最终进展来自科学、强化清晰的头脑和我们一路以来使用的工具。
一个简单但实用的查看JVM内存是否存在内存溢出以及查看GC情况的命令
jstat -gcutil pid 2000:2秒钟打印一次内存占用和GC情况nn可以查看内存占用情况,GC次数及耗时,以及每次GC成果nnnnS0:幸存区1占用率nnS1:幸存区2占用率nnE:Eden区占用率nnO:老年区占用率nnM:元数据区(java8,相当于java7及之前的永久代的概念)使用大小nnccs:压缩后使用率nnYGC:young gc 次数,nnYGCT:young gc耗...
使用valgrind进行内存泄漏和非法内存操作检测
valgrind是一个强大的工具,最常用的功能是用它来检测内存泄漏和非法内存的使用。要想让valgrind报告的更加细致,请使用-g进行编译。rn基本命令如下:rnrnrn$ valgrind --tool=memcheck --leak-check=yes programrnrn可以检测如下问题:rnrn1. 如果malloc/realloc/calloc和free的数量不同,则会报告如下的内容
Java判断某个进程是否开启
在java代码中偶尔需要判断某个进程是否开启,可以用如下代码://传入进程名称processNamepublic static boolean findProcess(String processName) {n BufferedReader bufferedReader = null;n try {n Process proc = Runtime.
jvm堆内存溢出后,其他线程是否可继续工作
    最近网上出现一个美团面试题:“一个线程OOM后,其他线程还能运行吗?”。我看网上出现了很多不靠谱的答案。这道题其实很有难度,涉及的知识点有jvm内存分配、作用域、gc等,不是简单的是与否的问题。nn    由于题目中给出的OOM,java中OOM又分很多类型;比如:堆溢出(“java.lang.OutOfMemoryError: Java heap space”)、永久带溢出(“java....
内存溢出导致JVM进程被kill
查看gc.lognn为什么会有promotion fail呢,是因为垃圾回收时,新生代的对象晋升到老年代,但是老年代放不下了,因此会触发这个报错。可以看出来,上一次GC完新生代已使用空间为345M,老年代已使用空间大约3540M,难怪晋升失败。最后一次GC结束,新生代居然还有4.5G的存活对象。nnpromotion-failed 产生原因:当进行young gc时,由于新生代空间不足,有部分对...
java内存溢出排查正确姿势:
java内存溢出排查正确姿势: n1.jstat -gcutil pid 看gc频次是否正常,看gc是否能回收掉垃圾; n2.jmap -histo:live pid (这个会触发FGC) n3.jstack pid 看线程谁被阻塞 n最后重启,重启前,jmap -dump:format=b,file=路径/文件名 nEMA慢慢分析内存,并结合业务代码看,如果是第三方jar包的类,那么使用下载源
JAVA检测指定的进程是否在运行
JAVA检测指定的进程是否在运行
java进程被系统内存溢出而杀掉
n n n 开发人员兼职运维多熟悉下linux的指令,真的真的真的很有必要,sudo dmesg -T | grep "(java)" 这个就是救命的。我们新上线的spring cloud项目,有几台机器莫名其妙上面的购物车服务出现过两次挂掉,打印的日志都正常,运维无从下手。今天我们试着通过这个命令就可以看到是操作系统的命令执行了Out of Memory (OOM)...
linux下检测某个进程是否存在
#include<unistd.h>n#include<sys/types.h>n#include<sys/wait.h>n#include<stdio.h>n#include<stdlib.h>n#include<fcntl.h>n#include<limits.h>n#include<iostre
Shell实现判断进程是否存在并重新启动脚本
简洁版: #! /bin/bashn # author caoxinn # time 2012-10-10 n # program : 判断进行是否存在,并重新启动n function check(){n count=`ps -ef |grep $1 |grep -v "grep" |wc -l`n #echo $countn if [ 0
STM32 CAN诊断详解
        在许多领域里面,控制系统由很多部分组成,只不过有主次之分。主控制系统是如何知道其他系统是否出现问题的,答案就是通过can诊断,不仅能知道出现的问题还能进行想对其进行的操作。一般为诊断仪和各个部分的通信。nn       我们在can报文分为诊断报文和解析报文以及网络管理报文,不同的报文根据不同的ID保存在不同的位置。can诊断报文保存在自己的缓存里面。他的报文格式就是数据帧,简单来...
java中关闭查看进程
JAVA中检查进程是否已经存在。关闭某个进程
判断进程是否存在.ec
判断进程是否存在.ec判断进程是否存在.ec判断进程是否存在.ec判断进程是否存在.ec判断进程是否存在.ec判断进程是否存在.ec
批处理判断进程是否存在并后台执行。
由于一些原因软件老是莫名退出,因此写了个脚本n需求:n1:判断该进程是否存在n2:如果存在隔一段时间再判断n3:如果不存在启动该进程。n代码如下n@echo offnsetlocal enabledelayedexpansion nset p=nonset process=nset process_path=n:1nfor /F "tokens=1*" %%a in ('tasklist /nh ...
java判断任务管理器进程
写的一段代码,通过java操作任务管理器,判断任务管理器里面进程存在的状态(是否存在某个进程),我这个例子里面是判断是否存在HandInput这个进程
Linux判断进程是否存在并启动该进程
1.Linux判断进程是否存在并启动该进程nn#!/bin/bashnn#grep-v"grep"去掉grep进程nPIDS=`ps -ef |grep myprocess |grep -v grep | awk '{print $1}'`nif [ "$PIDS" != "" ]; thennecho "myprocess is runing!"nelsenn#运行进程n./myproc...
Java内存溢出(OutOfMemory),内存分析相关工具
[url=http://uglytroll.ycool.com/post.3046111.html]http://uglytroll.ycool.com/post.3046111.html[/url]rnrn1、jconsolern这是java 1.5还是1.6自带的工具rn在JDK_HOME\bin\可以找到rnrnGUI的界面让人看起来很舒服rnrn在你的JAVA application运行时...
检查进程存在的5种方法
检查进程存在的五种方法:rnrn通过wait()函数来监控: 这种方法只适用于父子进程之间,父进程可以使用该函数对子进程进行监控rn信号量和文件锁: 如果某个进程一直持有某个信号量或者文件锁,并且该文件锁或者信号量一直处于被监控状态,那么当可以获取到信号量和文件锁的时候说明该进程已经终止rn进程间IPC通信机制: 可以通过进程间通信的某些机制来实现对某一个进程的监控,比如FIFO,可以给被监控进程管道的读...
linux脚本练习(一):判断进程是否存在
vim monitorProcess.sh#!/bin/bashnif [ ! "$1" ]nthenn echo "please input the process key as a argc"n exitnelsen ps -elf| grep $1 | grep -v grep > /dev/nulln if [ $? -ne...
zabbix3.0.4关于java服务端程序内存溢出的处理
关于java服务端程序内存溢出的处理nnnjava服务端程序内存溢出会产生jvm.log文件,此时程序会挂掉,无法正常处理业务,需要重启服务nnn思路:n当存在jvm.log这个文件的时候则触发clean_jvmlog.sh脚本删除jvm.log文件并重启对应的服务nnnnn1.添加触发器nvim /etc/zabbix/zabbix_agentd.confn加入如下选
java判断某个进程是否在启用
前段时间测试的时候发现客户端,双击图标多次回生成多次XXX.exe.所以在启动时判断一下时候有进程已经启动了,下面把代码写出来。rn [code="java"]public boolean getProcess(){rn boolean flag=false;rn try{rn Process p = Runtime.getRuntime().exec( "cmd ...
java中判断该进程是否已经启动
思路从http://blog.csdn.net/genww/article/details/6119731所得,稍作修改。rnrn要求做一个Java控制台程序,并要求程序不能同时重复运行。此功能可以通过调用jps命令实现。rn方法:rn[code="java"]rnpublic class Test {rnrn public static void main(String[] args)rn {r...
java代码获取进程是否存在、编写bat脚本判断进程,不存在则启动
java环境jdk的bin目录下copy文件javaw.exe为affectivew.exenn脚本如下:nn@echo offntasklist | find /i "affectivew.exe" && echo [ %time:~,-3% ]存在进程affectivew.exe|| start %JAVA_HOME%\bin\affectivew.exe -jar C:\U...
【Java核心-进阶】JVM 内存监控与诊断
rn1. 获取 JVM 内存信息的方法rn1.1 综合性图形化工具rn如:JConsole、VisualVM(GitHub)、 VisualVM(JDK tool)、Java Mission Control(JMC)等rn rn其中,JFR(Java Flight Recorder)+ JMC 算是针对生产环境中查看 JVM 信息的典型方法之一。rn具体操作就是:rnnn先让Java进程开启JFR...
易语言_进程是否存在
易语言_进易语言_进程是否存在易语言_进程是否存在
如何判断远程节点进程是否存活
我们知道可以通过 is_process_alive 判断本地的进程是否存活,但是不能判断其他节点的进程,如何判断远程节点进程是否存活?上例子:rnis_remoteprocess_alive(Pid) when is_pid(Pid) -> rn rpc:call(node(Pid), erlang, is_process_alive, [Pid]);rnis_remoteprocess...
Java内存泄漏与内存溢出详解
内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态。n n内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出。
记一次很奇怪的 Java 进程Hang住的故障(未解)
n n n 一次同事反馈, 说线上访问某个存储的 Spark Executor 进程卡主不动了, 本该几分钟计算完成的任务, 跑了一个多小时都没有完成. 上去看 stacktrace 如下:n"Executor task launch worker-1" daemon prio=10 tid=0x00007fee81cee000 nid=0x2bfa in Objec...
C语言深度感悟之内存溢出
由变量溢出所想到的rnrnrnrnrn类型rnrnrn比特(位)数rnrnrn数值范围rnrnrnrnrn[signed] intrnrnrn16rnrnrn-32768~32767(-2^15 ~ 2^15 – 1)rnrnrnrnrnunsigned intrnrnrn16rnrnrn0 ~ 65535(0~2^16 - 1)rnrnrnrnrn[signed] short intrnrnrn
Java堆外内存及导致的溢出错误
除了Java堆和永生代之外,还有一些区域会占用较多的内存,而这些内存总和可能受到操作系统进程最大的内存限制。比如,一个服务器内存2G,其中1.6G分配给Java堆,另外的0.4G分配给操作系统和下面的区域,那么0.4G很可能不够用。例如当Direct Memory占用过多的内存时,虚拟机虽然会对Direct Memory进行回收,但是却不像新生代,老年代一样,发现空间不足了就通知收集器进行垃圾回收
linux查看某个进程是否启动
检查一下进程是否已经启动.rnps –ef |grep xxx进程rnrn比如rnrnps –ef |grep memcached
JAVA_OPTS和内存溢出
JAVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量。rn JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"rn rn-server:一定要作为第一个参数,在多个CPU时性能佳rn-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些rn-Xmx:java heap最大值,使用的最大内存rn上面两个值是分配J...
python 判断进程是否存在
1. 进程名 nnnimport psutilnndef judgeprocess(processname):n pl = psutil.pids()n for pid in pl:n if psutil.Process(pid).name() == processname:n print(pid)n breakn els...
arthas在线诊断JVM工具
一、镜像安装:nn1、切换到进程运行所在的用户nn$sudo su sc #sc为java进程运行的用户nn2、安装nn$curl -L https://alibaba.github.io/arthas/install.sh | sh #前提是你的机器到alibaba镜像未做隔离nn3、从shell进入到arthasnn$./as.shnn选择进程编号,比如1nn4、查看n$ thread -n...
根据进程名判断进程是否运行
问题描述:给定进程名,判断该进程是否正在运行。参考代码:#include <TlHelp32.h>BOOL IsProcessRunning(LPCTSTR lpProcessName)n{n if (NULL == lpProcessName)n return FALSE; HANDLE hProcess = NULL; n HANDLE hProcessSn
Linux监听进程是否存在,并加入定时任务
前言我们在linux主机上可能需要一直运行某一服务,如果关机后或者误杀,使得服务停止,从而影响日常的任务。比如一BI项目数据库的抽取,使用Taskctl调度,在每天固定时间进行数据的抽取,如果主机上Taskctl相关的服务进程被关闭的话,就会影响到数据的抽取!定时任务(调度)在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置
Java内存溢出的原因有哪些?Java进程占用内存构成有哪些?
很多人的理解是,Java进程占用的内存就是堆内存占用,再进一步就是Perm/元数据区的占用。nJava面试宝典里的,大多点到这为止,其实真实情况远远不是这样的。n如果持有以上观点,那么服务器上出现OOM,一点儿也不奇怪。了解Java进程的内存构成,对固定服务器内存的设置有帮助。nnnJava程序耗费内存:n内存占用=堆+方法区+程序计数器(可以忽略不计)+虚拟机进程本身+虚拟机栈(线程
shell 脚本: 多线程判断多个进程是否存在,不存在则重启
shell 预热nshell 中变量用 $ 区别n在shell脚本中变量赋值等号前后不能有空格,有空格会被认为是命令nstr='测试'necho $strnarr=('test1' 'test2' 'test3') # 数组, 每个元素间以空格隔开necho ${arr[0]} # 数组的访问necho ${#arr[@]} # 数组长度nnshell 中的 for 循环和 ifnfor i in...
linux命令直接从服务器查看死锁内存溢出等问题的命令(直接定位到代码)
1、top(查看cpu占有率最好的线程)nn2、top -Hp pidnn3、printf "%x\n" 3046 (拿到TID 转换成16进制)nn4、jstack -l3036 (查看当前线程下所有的线程执行状态 注意:是通过Tid号进行区分 各各进程的) nn比如:这里的0xbe6 就是 16进制 , 通过Thread-0 后面的nid 来进行区分 不同的进程nnn...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 学习java进程 java的学习进程