AiRui 6.27 Day06

一个对象可以同时被多个指针指向
一个指针可以指向不同的对象, 但是同一时刻只能指向1个

1. 指针是可以传递的

目录

一个对象可以同时被多个指针指向一个指针可以指向不同的对象, 但是同一时刻只能指向1个

什么是内存垃圾:


   从栈中传递到堆区
           例如: 领养宠物成功后, 将宠物对象的指针传递到宠物数组中进行存储
                 随机生成怪物对象后, 将怪物对象的指针传递到怪物数组中进行存储
   从栈中传递到另一个栈中
           例如: 宠物杀死怪物成功后, 调用宠物的killOk方法, 并把怪物的指针传递
           到killOk方法中, 这样可以在killOk方法中通过怪物的指针获取到被杀死的怪物对象中的信息 

2. 禁止直接操作对象中的属性, 用成员方法封装操作对象属性的过程
   对象中的属性被private封装了
   所有操作都应该提供成员方法, 用指针去调用成员方法来操作
   例如: 当宠物攻击或被攻击, 怪物攻击或被攻击, 都应该提供对应的成员方法进行调用

什么是内存垃圾:

什么是垃圾回收:GC(garbage collection)

手动gc,JDK提供了一个GC函数,调用这个函数,就完成对JVM虚拟机内存进行一次GC

System.gc()

自动GC,当JVM虚拟机启动后,后台会自动运行一个GC程序,负责内存的GC操作 

这个后台的GC程序会定时做GC操作

JDK自带的jvisualvm,安装visual Gc插件:

同一个对象可以被多个指针同时指向

一个指针可以指向不同的对象,但是同一个时刻只能指向一个对象

测试当对象有指针指向的时候,对象不会被垃圾回收

测试当对象没有指针指向的时候,对象会被垃圾回收,会不会立即回收?不会

元空间(MetaSpace)就是方法区(Meta Area)

栈区(Stack Area)

堆区(Heap Area)

伊甸园区 Eden

生存在1区

生存者2区

老年区

很多对象都是朝生夕死的

小对象出生在伊甸园区,GC后,如果能存活下来会被转移到幸存者区,对象的年龄计数器会+1,当对象经历了15次回收后依然能够存活,会进入老年代

重对象/大对象一出生就在老年区

新生代是回收最频繁的区域

对象永远在堆区生成

Minor GC和Major  GC/Full GC 的区别:

 Full GC定义是相对明确的,就是针对整个新生代、老生代、元空间(metaspace,java8以上版本取代perm gen)的全局范围的GC;

正常情况下都做Major  GC

Minor GC发生在新生代的GC

Major  GC/Full GC发生在老年代的GC,通常Major  GC发生的时候都伴随着Minor GC的发生

在JVM虚拟机执行GC的时候,所有的线程都会暂停运行,有一句叫做"stop the world!"

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值