Java面试黄金宝典44

1. 查看进程的运行堆栈信息命令 gstack

gstack 是 Linux 系统下用于查看指定进程运行时堆栈信息的工具。当程序出现崩溃、死锁或者性能瓶颈等问题时,借助 gstack 可以查看进程中各个线程的调用栈,从而辅助开发人员定位问题。

  • 定义

gstack 本质上是一个封装了底层 ptrace 系统调用的工具。ptrace 允许一个进程控制另一个进程的执行,gstack 利用它附加到目标进程上,暂停目标进程的执行,然后读取并格式化输出每个线程的堆栈信息。

  • 要点
  1. 命令格式gstack <进程 ID>,需准确提供目标进程的 ID。
  2. 权限问题:通常要以 root 用户或者与目标进程相同的用户身份执行,否则可能因权限不足无法获取堆栈信息。
  3. 信息解读:堆栈信息按栈顶到栈底顺序展示函数调用顺序,栈顶为当前正在执行的函数。
  • 应用

在 Java 开发中,若 Java 程序出现死锁,可先使用 ps -ef | grep java 查找 Java 进程 ID,假设为 1234,然后在 shell 中执行:

shell

gstack 1234

此命令会输出该 Java 进程中所有线程的堆栈信息,通过分析这些信息,能找出可能处于死锁状态的线程及其调用栈。

 

2. Linux 查看进程消耗的资源

 

在 Linux 系统中,有多种命令可用于查看进程消耗的资源,涵盖 CPU、内存、磁盘 I/O 和网络 I/O 等方面。常用命令有 tophtopps 和 lsof

  • 定义
  1. top:实时显示系统中各个进程的资源使用情况,默认按 CPU 使用率排序,能直观呈现系统资源的动态变化。
  2. htoptop 的增强版,界面更友好,支持鼠标操作,可清晰展示各进程的资源占用状况。
  3. ps:用于查看进程的基本信息,结合不同选项可获取进程的 CPU 和内存使用情况。
  4. lsof:用于查看进程打开的文件和网络连接,通过分析这些信息可了解进程的磁盘 I/O 和网络 I/O 情况。
  • 要点
  1. 实时性top 和 htop 适合实时监控进程资源使用,ps 常用于获取某一时刻的进程信息。
  2. 信息筛选:可根据需求使用不同选项筛选和排序信息,如按 CPU 或内存使用率排序。
  3. 资源类型:不同命令关注的资源类型有别,top 和 ps 侧重 CPU 和内存,lsof 关注文件和网络连接。
  • 应用

在 Java 开发中,若要优化 Java 程序性能,可使用以下命令:

  • 使用 top 实时监控 Java 进程的 CPU 和内存使用率:

shell

top

进入 top 界面后,按 P 键按 CPU 使用率排序,按 M 键按内存使用率排序。

  • 使用 ps 查看 Java 进程的 CPU 和内存使用情况:

shell

ps -eo pid,user,%cpu,%mem,args | grep java

此命令会输出所有 Java 进程的 ID、用户、CPU 使用率、内存使用率和进程命令行参数。

  • 使用 lsof 查看 Java 进程打开的文件和网络连接:

shell

lsof -p <Java 进程 ID>

将 <Java 进程 ID> 替换为实际的 Java 进程 ID,即可查看该进程打开的所有文件和网络连接。

 

3. SMP

SMP 即对称多处理(Symmetric Multi - Processing),是一种计算机体系结构,多个处理器(CPU)共享同一内存和 I/O 总线,每个处理器地位平等,可平等访问系统所有资源。

  • 定义

SMP 系统基于共

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值