java 持久代 新生代 老年代

持久代(jdkq1.7),jdk1.8被称为元数据区  元数据区主要是java程序代码的代码区和数据区  java程序中类(class)会被加载到整个区域的不同数据结构中去,包括常量池、域、方法数据、方法体、构造函数、以及类中的专用方法、实例初始化、接口初始化等  这个区域对于操作系统来说是堆的一部分;而对于java程序本身而言是容纳程序本身及静态资源的空间,使得jvm能够解释执行java程序

新生代 存储新进去内存中的对象  存在堆内存中的  分三块 eden  sourvivor(s0)--from区  sourvivor(s1)--to区 由jvm统一管理 ,使用时jvm会向操作系统申请一整段内存区域,当执行new 操作时jvm将在这段内存中按照所需大小分配java程序  程序不负责通知jvm何时可以将对象所占用内存空间释放  gc会定时回收

老年代 存储随着时间推移一直占用内存空间的对象 存在堆内存中的 jvm统一管理  使用时jvm会向操作系统申请一整段内存区域,当老年代中的存储空间因为程序执行关系会逐渐将对象移动到老年代中,这时候jvm会根据程序计数器中的java指令和对象存活时间启动full  gc

垃圾回收机制在执行对应的垃圾回收类时会先标记内存中非活跃的对象,标记完以后会启动清除,将非活跃性的区间清除,然后将内存中尚需要使用的对象所占内存进行压缩同之前清除完以后的内存空间合并

jvm虚拟机对于分区分代以后内存进行批次管理,程序执行过程中会自动调用对应的分区中的对象操作数据,操作完数据以后会进行垃圾回收,然后再分配对象内存。以此反复执行

jvm对于Windows  Linux 内存关系各不一样 

这里主要讲述Linux 系统  :在一些物理内存为8g的服务器上,主要运行一个java服务,系统分配内存如下:java  jvm堆大小为6g  一个监视进程占用600m

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值