大佬浅谈JVM

引出面试问题
1、什么是JVM(java virtual Machine )?
JVM 是 JAVA class 编译器,在不同的底层运行 例如linux、windows运行。
下图关系:


image.png

2、为什么要学习JVM?
在使用JAVA编程中,更好避开编程中 涉及到 JVM 坑。更好理解 JAVA编程对于对象实践。(例如 什么 bean 不会被回收,什么时候回收、回收过程)
堆 存储对象 应用对象
栈 先进后出 存储引用指针
JVM 最小单位是线程(线程 执行 需要 参数 数据、指令、返回地址(存在虚拟机栈))
3、深入 JVM 运行时数据区
数据
指令


image.png

程序技术器:线程执行当前的指令地址
虚拟机栈:存储当前线程运行时所需要的数据、指令、返回地址


image.png

本地方法栈: native 修饰的 方法
方法区:
1、分包括1.7 以前存放:类信息、常量、静态变量、JIT
2、1.7 以后 常量、JIT 放在堆里面的

image.png

head 和stack 模型


image.png

image.png

继续深入
参考:
https://www.cnblogs.com/dingyingsi/p/3760447.html
1、 什么类型的数据不可回收(不可达)
2、GC 回收算法
3、MAT 分析dump ,对代码进行调优分析

详解JVM 基础:
https://www.cnblogs.com/andy-zhou/p/5327288.html#_caption_19

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,438评论 1 14
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,697评论 3 83
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,729评论 0 11
  • 内存溢出和内存泄漏的区别 内存溢出:out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,...
    Aimerwhy阅读 755评论 0 1
  • ds.select(`ds.id`,`ds.性别==Dict.性别.男`,["部门","-id"],2,10):获...
    MisShop智能开发平台阅读 564评论 0 0