栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JVM探究

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM探究

1.jvm的位置

2.jvm的体系结构

3.类加载器(双亲委派机制)

作用:加载Class文件

  • 虚拟机自带的加载器
  • 启动类(根)加载器
  • 拓展类加载器
  • 应用程序加载器

类加载器收到类加载的请求,会将这个请求向上委托给父类加载器来完成,一直向上委托,直到启动类加载器;启动类加载器检查是否能够加载当前这个类,能加载就结束,使用当前的加载器;否则,抛出异常,通知子加载器进行加载;
出现null表示加载不到,因为虚拟机自带的加载器是c,c++写的

4.Native,方法区 native

凡是带了native关键字的,说明java的作用范围达不到了,需要调用底层c语言的库;
会进入本地方法栈,调用本地方法接口(JNI:拓展java的使用,融合不同的编程语言为java所用),最初为c,c++。因为Java诞生的时候,c和c++很流行,想要立足就必须要有调用c,c++的程序,它会在内存中专门开辟一块标记区域来登记native方法,在最终执行的时候加载本地方法库中的方法通过JNI

方法区


static,final,Class

5.PC寄存器

程序计数器:每一个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也就是即将要执行的指令代码),在执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不计

6.栈

栈:先进后出,后进先出
队列:先进先出

为什么main()先执行,最后结束

栈主管程序的运行,生命周期和线程同步;线程结束,栈内存也就释放;对于栈来说,不存在垃圾回收问题


这时候就会栈溢出

栈存储的是什么?

8大基本数据类型,对象引用,实例的方法

Heap,一个JVM中只有一个堆内存,堆内存的大小是可以调节的
堆内存中可以细分为三个阶段:

  • 新生区
  • 养老区
  • 永生区

GC垃圾回收主要是在伊甸园区和养老区;在JDK8以后,永久存储区改了个名字(元空间)
假设内存满了,OOM,堆内存不够了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号