垃圾回收机制、字符编码、文件操作简介

本文介绍了Java的垃圾回收机制,包括引用计数、标记清除和分代回收,以及字符编码的基本概念、发展历史和实践操作。同时,概述了文件操作的相关知识,并给出了两个编程作业:统计列表中数据值的出现次数及编写简单的员工管理系统。
摘要由CSDN通过智能技术生成

垃圾回收机制

垃圾回收机制是用来回收不可用的变量值所占用的内存空间,python会自动申请和释放内存空间,主要通过引用计数、标记清除、分代回收来帮助释放内存空间

引用计数

当数据值身上的引用计数为0时,占用的内存地址就会被垃圾回收机制回收
当数据值身上的引用计数不为0时,表示数据值还有用,就不会被垃圾回收机制回收
eg:
  name = 'nana'  # 数据值nana身上的引用计数为1
  name1 = name   # 数据值nana身上的引用计数为2
  del name1      # 数据值nana身上的引用计数为1
  del name       # 数据值nana身上的引用计数为0  此时会被垃圾回收机制回收
ps:循环引用中,引用计数不为0,所以不能够垃圾回收机制,得使用标记清除来解决  

标记清除

用来解决循环引用的问题,将内存中程序产生的数据值全部检查一遍,如果存在循环引用,则打上标记,然后一次性清除
eg:循环引用
l1 =['nana',]
l2 = ['xiaoxiao',]
l1.append(l2)  # 列表的引用计数为2
l2.append(l1)  # 列表的引用计数为2
print(l1)  # ['nana', ['xiaoxiao', [...]]]
print(l2)  # ['xiaoxiao', ['nana', [...]]]
del l1  # 列表的引用计数变为1
del l2  # 列表的引用计数变为1

分代回收

在多次扫描的情况下,变量都没有被进行垃圾回收机制,那么会进行分代回收,垃圾回收机制的检测频率也会逐一降低
标记清除每隔一段时间就会就会将所有数据的引用计数遍历一次,使之资源内存消耗过大,为了减少垃圾回收机制的资源损耗 将其分为三代(新生代,青春代,老年代)管理

字符编码

字符编码简介

1.只有文本文件才有字符编码的概念
2.计算机内部存取数据的本质>>>:二进制(计算机只认识01)
3.为什么我们在使用计算机的时候可以随意敲出各国文字
	存在一个人类字符与数字转换的关系
4.字符编码表:记录了人类的字符与数字的对应关系

    

字符编码发展史

第一阶段:一家独大(计算机只能识别英文)
	1.计算机是由美国人发明的,美国人需要让计算机识别英文字符
    2.一个英文字符对应 1bytes,英文的所有字符加起来不超过127(2**7),美国人考虑到后续可能出现新的字符 所以加了一位以备不时之需(2**8=256)
    3.ASCII码:记录了英文字符与数字对应的关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值