打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
jvm学习笔记
userphoto

2023.08.22 天津

关注

一、什么是jvm

java虚拟机,java之所以跨平台通过jvm运行环境实现。

详细jvm内存结构

其中,方法区和堆线程(共享区),其他是线程私有程序计数器

内存空间小,线程私有。通过改变计数器的值来选取下一条需要执行指令的字节码指令,分支、异常处理、循环、跳转、线程恢复等基础功能需要依赖计数器完成。

java内存泄漏、溢出场景

泄漏:对象一直被引用,但不会调用

溢出:内存泄漏导致堆栈内存增大

1、大量的jar、class文件加载,导致空间不足

2、操作大量的对象内存空间

3、nio直接操作内存

解决方法:

查看程序具体泄漏问题,设置参数加大空间,代码是否存在死循环,或循环产生过多重复对象实体

二、java线程池

线程池一般值虚拟机栈。

jvm规范让每个java线程拥有独立的jvm栈,也就是调用方法栈。

调用的时候,生成一个栈帧。栈帧保存在虚拟机栈中的,栈帧存储局部变量表、操作数栈、动态连接和方法返回地址等信息。

当线程运行时候,当前活动始终是虚拟机栈的栈顶元素。

什么是java双亲委派模式,有什么场景打破这模式?

双亲委派模式为了解决类载入过程中的安全问题,

例子:自己写了 java.lang.Object的类,欺骗jvm。通过双亲委派模式,JVM会优先在 BootstrapClassLoader的路径下找到 java.lang.Object类,并载入它

三、jvm完整的GC流程

1、YGC :对新生代堆进行gc。频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收。性能耗费较小。

2、FGC :全堆范围的gc。默认堆空间使用到达80%(可调整)的时候会触发fgc。以我们生产环境为例,一般比较少会触发fgc,有时10天或一周左右会有一次。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Java程序员必备基础图
JVM常见面试题解析
JVM 详解,大白话带你认识 JVM
JVM总结 ----JVM体系结构
Java虚拟机(JVM)中的内存设置详解
谈谈Java内存管理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服