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命令,定位到具体哪两个(多个)线程出现死锁。

相关推荐
超梦dasgg11 分钟前
拆分大对象 + 流式处理 + 不一次性加载全量数据
java·jvm·windows
在繁华处17 分钟前
从零搭建轻灵(五):记忆系统与生产化特性
java·jvm·oracle
Java面试题总结10 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
白露与泡影12 小时前
JVM GC调优实战:从线上频繁Full GC到RT降低80%的全过程
java·开发语言·jvm
番茄去哪了13 小时前
JVM虚拟机(三)
jvm
888CC++14 小时前
栈上分配 VS 堆分配 核心区别
java·开发语言·jvm
AI人工智能+电脑小能手17 小时前
【大白话说Java面试题 第69题】【JVM篇】第29题:GC Roots 有哪些?
java·开发语言·jvm·面试
Yeats_Liao18 小时前
物联网接入层技术剖析(三):epoll在JVM中的映射
java·linux·jvm·人工智能·物联网
Dicky-_-zhang20 小时前
KubeEdge边缘部署实践
java·jvm
学习中.........21 小时前
JVM 垃圾回收核心技术、演进全景与生产调优规范
java·jvm·测试工具