jvm前15回

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

参考黑马的视频课:添加链接描述

前15节

一、jvm是什么?

java virtual machine java虚拟机,能屏蔽机器不同操作系统之间的区别,将程序编译成cpu可识别的二进制码

jre=jvm+基础类库

jdk=jvm+基础类库+编译工具

二、程序计数器

寄存器,记住下一条指令的地址。

程序计数器是线程私有的,不会存在线程溢出

三、栈

每个线程运行需要的内存叫虚拟机栈

每个栈对应多个栈帧,对应每次方法调用的内存

每个线程只有一个活动栈帧,对应正在执行的方法

栈帧包含方法、成员变量

每个栈默认大小1024kb(除了windows)

栈不涉及垃圾回收,栈帧出栈时,会自动被回收,但不是GC垃圾回收

栈内存越大,线程数越少,效率越低。所以栈内存合理即可

方法内的局部变量是线程安全的,只要变量不传出方法,就是线程安全的

栈内存溢出:方法间的递归调用,即栈帧过多

2.成员变量之间的相互引用

四、CPU占用高

1.top命令查看cpu占用最高的进程

2.用ps命令查看对应线程: ps H -eo pid,tid,%cpu | grep 32655

3.找到对应的写代码行数:jstack 32655 中找到16进制的线程,下面有对应的方法行

长时间没有响应

jstack 32655 翻到下面有报错信息,查看报错信息并返回行数。


总结

相关推荐
m0_734949791 分钟前
CSS 背景图片无法加载的常见原因与正确写法详解
jvm·数据库·python
2301_815279523 分钟前
mysql如何使用yum安装mysql_配置官方yum源与自动安装
jvm·数据库·python
weixin_458580126 分钟前
MySQL跨版本迁移数据格式不兼容_使用mysqldump全量导出导入
jvm·数据库·python
Greyson19 分钟前
SQL触发器在导入大文件时如何跳过_使用禁用触发器语句导入
jvm·数据库·python
2401_8877245013 分钟前
Redis怎样统计独立访客UV_基于Set的SADD指令天然去重特性
jvm·数据库·python
m0_7164300718 分钟前
SQL如何处理时间序列缺失值_利用窗口函数进行前后值填充
jvm·数据库·python
2301_8152795222 分钟前
golang如何编译iOS库_golang编译iOS库实践
jvm·数据库·python
2402_8548083723 分钟前
C#怎么开发CAD自定义命令_C#如何调用AutoCAD的API【教程】
jvm·数据库·python
m0_7164300725 分钟前
mysql乐观锁更新失败如何处理_应用层重试逻辑编写建议
jvm·数据库·python
qq_6543669826 分钟前
SQL嵌套查询中的变量传值_优化存储过程逻辑
jvm·数据库·python