Linux java查看内存消耗 linux查看java程序内存(转载)

Linux java查看内存消耗 linux查看java程序内存

目录

一、jps命令。

二、ps命令。

三、top命令。

四、free命令。

五、df命令。


查看应用的CPU、内存使用情况,使用jps、ps、top、free、df命令查看。

一、jps命令。

可以列出本机所有java应用程序的进程pid。

Linux java查看内存消耗 linux查看java程序内存_查看CPU使用情况

jps [ options ][ hostid ]
选项
-q 仅输出VM标识符,不包括class name,jar name,arguments in main method。
-m 输出main method的参数。
-l 输出完全的包名,应用主类名,jar的完全路径名。
-v 输出jvm参数。
-V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件)。
-Joption 传递参数到vm。

二、ps命令。

显示当前系统的进程状态。

查看哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、进程占用的资源等。

[root@xxx /]# ps -l

Linux java查看内存消耗 linux查看java程序内存_Linux java查看内存消耗_02

F代表这个程序的旗标 (flag), 4 代表使用者为 super user。
S代表这个程序的状态 (STAT)。
UID用户身份证明。
PID程序的ID,进程识别号,进程标识符。
PPID当前进程的父进程ID。
CCPU使用的资源百分比。
PRIPriority优先执行序。
NInice值,负值表示高优先级,正值表示低优先级。
ADDRkernel function 指出该程序在内存的那个部分。如果是个running #的程序,一般就是“-”。
SZ使用掉的内存大小。
WCHAN目前这个程序是否正在运作当中,若为 - 表示正在运作。
TTY登入者的终端机位置。
TIME使用掉的 CPU 时间。
CMD所下达的指令。

查找指定进程格式,根据关键字过滤。
ps -ef | grep 进程关键字

[root@xxx /]# ps -ef | grep xinxin-es-jd

Linux java查看内存消耗 linux查看java程序内存_Linux java查看内存消耗_03

显示所有进程信息,连同命令行。
ps -ef

[root@xxx /]# ps -ef

Linux java查看内存消耗 linux查看java程序内存_Linux java查看内存消耗_04

三、top命令。

实时显示process的动态,实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

[root@xxx ~]# top

Linux java查看内存消耗 linux查看java程序内存_查看内存使用情况_05

top - 00:32:08 up 150 days, 21:35, 2 users, load average: 0.91, 1.19, 1.48

23:10:41系统当前时间。
days系统启动后到现在的运行时间。
users当前登录到系统的用户(终端数)。
load average当前系统负载的平均值,系统在最近1分钟、5分钟、15分钟内,CPU的平均负载情况。

Tasks: 101 total, 1 running, 97 sleeping, 3 stopped, 0 zombi

total当前系统进程总数量。
running当前运行中的进程数量。
sleeping当前处于等待状态中的进程数量。
stopped停止的系统进程数量。
zombie僵尸进程数量。

%Cpu(s): 13.4 us, 1.0 sy, 0.0 ni, 84.6 id, 0.0 wa, 0.7 hi, 0.3 si, 0.0 st

us用户空间占用CPU百分比,表示用户空间程序的cpu使用率,没有通过nice调度。
sy内核空间占用CPU百分比,系统空间的cpu使用率,主要是内核程序。
ni用户进程空间内改变过优先级的进程占用CPU百分比,用户空间且通过nice调度过的程序的cpu使用率。
id空闲cpu,空闲CPU百分比。
wa等待输入输出的CPU时间百分比。
hicpu处理硬中断的数量。
sicpu处理软中断的数量。
st被虚拟机偷走的cpu。

MiB Mem : 1826.7 total, 85.9 free, 1477.8 used, 263.1 buff/cache

total物理内存总量。
free空闲内存总量。
used使用的物理内存总量。
buff/cache缓存,用作内核缓存的内存量。

MiB Swap: 0.0 total, 0.0 free, 0.0 used. 182.8 avail Mem

total交换分区总量。
free空闲交换分区总量。
used使用的交换分区总量。
avail Mem虚拟内存缓存。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

PID进程的ID,进程号。
USER进程所有者,用户名。
PRpriority优先级,进程的优先级别,越小越优先被执行。
NInice值。负值表示高优先级,正值表示低优先级。
VIRT进程占用的虚拟内存,进程使用的虚拟内存总量。
RES进程占用的物理内存,进程使用的、未被换出的物理内存大小,单位kb。
SHR进程使用的共享内存,共享内存大小,单位kb。
S进程的状态。S:休眠、睡眠;R:正在运行;Z:僵死状态、僵尸进程;N:进程优先值为负数;D:不可中断的睡眠状态;I:空闲状态,用在不可中断睡眠的内核线程上。T:暂停或者跟踪状态。X:进程已经消亡。
%CPUCPU使用率,进程占用CPU的使用率。
%MEM进程使用的物理内存和总内存的百分比。
TIME+进程使用的CPU时间总计,单位1/100秒。进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND执行的命令,进程启动命令名称。

查看某一个PID应用的内存使用情况。

top -p PID

[root@xxx /]# top -p 7098

Linux java查看内存消耗 linux查看java程序内存_物理内存_06

四、free命令。

显示内存状态。

显示当前系统未使用和已使用的内存数目,显示被内核使用的内存缓冲区。

显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

[root@xxx ~]# free

Linux java查看内存消耗 linux查看java程序内存_查看内存使用情况_07

Mem:内存的使用信息。
Swap:交换空间的使用信息。

total系统总的可用物理内存大小,总计物理内存的大小。
used已使用多大,已被使用的物理内存大小。
free可用有多少,还有多少物理内存可用。
shared多个进程共享的内存总额,被共享使用的物理内存大小。
buff/cache磁盘缓存的大小,被buffer和cache使用的物理内存大小。
available还可以被应用程序使用的物理内存大小,大概的计算方法available = free + buffer + cache。

五、df命令。

文件系统磁盘使用情况统计。
检查linux服务器的文件系统的磁盘空间占用情况,可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

[root@xxx /]# df

Linux java查看内存消耗 linux查看java程序内存_查看CPU使用情况_08

Filesystem文件系统,文件系统的名称。
1K-blocks1K-块,指定一个特定的文件系统1K-块1K是1024字节为单位的总内存。
Used已用。
Available可用。
Use%已用%,使用的内存的百分比。
Mounted on挂载点,文件系统的挂载点。
[root@xxx /]# df -h

Linux java查看内存消耗 linux查看java程序内存_Linux java查看内存消耗_09

Filesystem文件系统,文件系统的名称。
Size容量。
Used已用。
Avail可用。
Use%已用%,使用的内存的百分比。
Mounted on挂载点,文件系统的挂载点。
  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bea
对于 Linux 上的 Java 程序调优,有几个常见的方面可以考虑: 1. JVM 参数调优:可以通过调整 JVM 的参数来优化 Java 程序的性能。例如,可以通过设置堆大小、垃圾回收器策略、线程池大小等参数来实现优化。可以使用工具如 jstat、jvisualvm、jmap 等来监控和分析程序的运行情况。 2. 内存管理:Java 程序在运行时会消耗大量的内存,合理管理内存可以提高程序的性能。可以通过使用合适的数据结构、避免过度创建对象、及时释放资源等方式来进行内存管理。 3. 并发控制:多线程是 Java 程序的一个特点,但不正确的并发控制可能导致性能问题。可以使用并发集合类、合理使用锁、避免竞争条件等方式来优化并发性能。 4. IO 操作优化:IO 操作通常是影响 Java 程序性能的重要因素之一。可以使用非阻塞 IO、缓冲区、批量处理等方法来提高 IO 操作的效率。 5. 数据库访问优化:如果 Java 程序需要频繁地访问数据库,可以考虑使用连接池、合理设计数据库表结构、使用索引、批量操作等方式来优化数据库访问性能。 6. 代码优化:对于性能瓶颈明显的代码片段,可以进行针对性的优化。例如,使用更高效的算法、减少循环次数、避免不必要的计算等。 请注意,以上只是一些常见的优化方面,具体的调优方法需要根据具体情况进行分析和实施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xushuanglu_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值