java String如何回收_Javaday19(注解、垃圾回收、核心api-String)

一、注解

定义:注解(Annotation),也叫元数据,是一种代码级别的说明。是Java 的JDK1.5版本开始引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类:  很多框架技术的新版本中,都可以使用注解替代XML配置文件;

①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】

② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】

③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

844917b4b742924705d405c2d19215a3.png

6f10ef95743c08d422543d596faffaed.png

ad1402b40ace9ec52869a2bd330ad04f.png

2036793678684a6efc6d021858432738.png

37fd5f2401d8e0cb137cf49fd23f357f.png

74aa890c0a302c734aee24ab1e835c9c.png

be4e7be163b683baaf3cc8fa70c97bfc.png

ee272370b3ec706485d172f506e2a56a.png

75943f853587c9ae2207b603228d2bec.png

二、垃圾回收

73969c0b788e69bae75c92fa71ae8b70.png

运行时的Java实例对象存储在堆内存空间中。当一个对象不再被引用了,它变成可被从堆内存中回收空间。在垃圾回收的过程中,这些对象将被从堆内存中清除,同时它们的空间也就被回收了。

堆内存的空间根据对象的存活时限主要分成了三部分:年轻代、老年代、永久代

e3f1f6fbd64da0beb5c778b6a6db5c37.png

年轻代

a-Eden区(所有实例在运行时最初都分配到eden区中)

b-S0 Survivor Space(老一些的对象被从eden区移动到S0区,其实是eden区中的对象经过一次对eden区的Young GC还存活的对象被移动到S0)

c,-S1 Survivor Space(再老一些的对象被从S0区移动到S1区,其实是在Young GC过程中S0区已满,则会将eden区中还存活的对象和S0区中的存活对象移动到S1区中

老年代

经过S0,S1中几轮迭代后还存活的对象被提升到老年代

永久代

包含一些元数据像类、方法等等。永久代空间在JDK8特性中已经被移除

Java垃圾回收是一个自动运行的管理程序运行时使用的内存的进程。通过GC的自动执行JVM将程序员从申请和释放内存的繁重操作中解放出来

作为一个自动执行的进程,程序员不需要在代码中主动初始化GC。Java提供了System.gc()和Runtime.gc()这两个hook来请求JVM调用GC进程

尽管要求系统机制给程序员提供调用GC的机会,但是实际上这是由JVM负责决定的。JVM可以选择拒绝启动GC的请求,因此并不保证这些请求会真的调用垃圾回收。这是JVM基于内存堆空间的Eden区(年轻代)的使用情况做出的决定。

JVM规范将这个选择权利留给了各个JVM的具体实现,因此实际上JVM是如何选择的视不同JVM的实现而定(但应该始终记住的是,不能依赖于这两个方法的调用,它们是不被保证执行的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值