JVM-虚拟机栈

一、概念

Java虚拟机栈是Java虚拟机内存结构中的一部分,是每个线程运行的内存空间。每个虚拟机栈由多个栈帧组成,每次调用一个方法会创建一个新的栈帧。

二、栈内存溢出

由于栈帧过多,导致栈帧所用的内存之和超出了给栈分配的内存,造成了StackOverflow错误。用-Xss参数可以设置栈的大小,例如-Xss256k表示设置栈的大小是256k字节

三、线程运行诊断
案例1:CPU占用过高
  1. 用top命令找到哪个进程占用CPU过高;
  2. ps H -eo pid, tid, %CPU | grep 进程id,定位到该进程中哪个线程占用CPU过高;
  3. jstack 进程id,会打印进程当前线程的堆栈信息,可以根据占用CPU高的线程id进一步定位到源代码的某文件-某行存在问题。
案例2:长时间没有返回结果(出现死锁)

也可以用jstack 进程id命令,定位到具体哪两个(多个)线程出现死锁。

相关推荐
笨蛋不要掉眼泪16 小时前
Java虚拟机:对象复活、引用强度与Stop-The-World
java·开发语言·jvm
吃饱了得干活19 小时前
JVM垃圾回收:从新生代到ZGC,从理论到调优
java·jvm·后端
长不胖的路人甲19 小时前
可达性分析法(根搜索算法)完整详解
java·jvm·算法
程序员天天困21 小时前
Arthas mc + retransform 实战:线上改完代码不用重新发版
jvm·后端
玛丽莲茼蒿21 小时前
很难出错的Spring5(十)—— IOC进阶
java·开发语言·jvm
花生了什么事o1 天前
JVM运行时数据区详解:变量、对象和类信息到底存在哪里
jvm
孫治AllenSun2 天前
【DataX】生产环境搭建DataX集群案例
java·开发语言·jvm
丈剑走天涯2 天前
JVM(十) JDK8 CMS (Concurrent Mark Sweep)
jvm
丈剑走天涯3 天前
JVM(九) JDK8 G1 (Garbage-First)
jvm
笨蛋不要掉眼泪3 天前
Java虚拟机:堆的参数配置
java·开发语言·jvm