java虚拟机 内存小结

java源代码(.java)通过编译器编译为字节码文件(.class),然后由JVM的类加载器加载各个类的字节码文件,加载完毕后,交给JVM执行引擎执行。整个执行的过程中JVM会用一段空间来存储执行期间用到的数据及相关信息,这段空间称为运行时数据区(Running Data Area),也就是常说的JVM内存。java中的内存管理就是这段空间进行管理(如何分配和回收内存)。


类加载器:启动类加载器(Bootstrap c++ )、扩展类加载器(Extension  java)、应用程序加载器(AppClassLoader)、
    自定义类加载器(java.lang.ClassLoader子类)
双亲委派  沙箱安全机制:防止对java源jar中的类进行修改,自己处理不了,交给父亲,父亲处理不了交给父亲的父亲。

java内存:

程序计数器:占内存较小,线程私有,生命周期与线程相同 (指示器)分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成
虚拟机栈:线程私有,生命周期与线程相同,连续的内存空间   StackOverflowError
java堆:线程共享,生命周期与虚拟机相同,可以不使用连续内存地址 保存对象实体,包括数组都要在堆上分配。包含:伊甸区(新生代),幸存区1,幸存区2,老年代,永久代(jkd8后元空间);新产生的对象存放在伊甸区中,程序执行完毕,就会回收内存,清除新生代,幸存下来的进入幸存区,超过15没有被清除就会放到老年代,永久代吗,是存放jdk中的自带的java环境自带的类,以前是存放在内存中,而1.8之后存放在本地中(称为元空间),减少内存占用。
方法区: 线程共享,生命周期与虚拟机相同,可以不使用连续内存地址,存储虚拟机加载的类信息、常量、静态变量、即时编译后的代码等
运行时常量池:方法区的一部分   存放字面量及符号引用

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值