JVM的一些理解

java1.7的JVM 图:

在这里插入图片描述
1.类加载器,加载.class文件,把.class文件加载到jvm内存里面,类加载器有2大类型一共有4种,有用户自定义加载器
启动类加载器,扩展类加载器,应用程序加载器。

2.执行引擎:把jvm的相关的命令交给操作系统。

3.但凡有Native的方法,java执行不了,就会他放到本地方法栈,出栈的时候调用本地接口,
本地接口会调用本地方法库。

4.pc寄存器:指向下一个方法的指针,生命周期短,与线程同生共死,不需要垃圾回收,

5.方法区:属于共享区间,用来保存所有定义的方法的信息。如静态变量+常量+类信息(构造方法/接口定义)+运行时常量池
他的生命周期很长,jvm同生共死。

6.stack 栈:他的特点是先进后出,生命周期很短,线程一结束栈就Over,不存在垃圾回收问题,主要用来存储8种
基本类型的变量+对象的引用变量+实例方法,也会有一定的异常:java.lang.StackOverflowError栈溢出,写的代码有问题,
一直在压栈,造成这个问题。调整内存大小,治标不治本,应该找到问题代码,去解决。

7.Heap堆:在java7以前,逻辑上堆分为新生区,养老区,永久区,新生区又分为,伊甸区和幸存区,
幸存区又分为0区和1区,java8以后永久区变为元空间,物理上来说不管java7还是java8只分为新生区和养老区
堆也会引起一些异常,Full GC之后依然无法回收垃圾会报java.lang.OutOfMemoryError:java heap space 简称OOM异常,造成这个的原因是
java虚拟机堆内存不够,可以通过参数-xms -xmx来调整,还有一种可能,就是代码有问题,代码创建了大量对象,并且长时间不能被垃圾
收集器收集.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值