首页 > 其他分享 >垃圾回收机制 流程控制

垃圾回收机制 流程控制

时间:2022-09-27 18:33:09浏览次数:39  
标签:代码 age 回收 while 垃圾 print 流程 引用

垃圾回收

在程序执行过程中,变量绑定和引用以积极各种内存操作,使用过后不在使用,如果不清理就会产生垃圾数据,占用大量内存,导致计算机不能正常运行,有一些语言 内存空间的申请和释放都需要程序自己写代码才可以完成,python 为了方便程序员使用,内部集成了一套垃圾回收程序。

引用回收

  1. 在程序中变量每绑定一个数据值,他的内部,就有一个引用就加一,如果解除数据绑定引用就减1,直到0,就被回收

    name1 = '张三'  # 引用为1
    name2 = name1  # 引用为2
    age = 18  # 引用为1
    del  # 解除绑定
    del age  # 引用为0被回收
    

标记回收

  1. 在程序中可能会出现,两个列表或元组或其他可以嵌套的数据类型,在解除与变量名的帮定后内存地址里面出现循环即引用一直唯一我们也不使用为垃圾数据的引用的情况

    num1 = [1,2,3,4,5]  # 引用为1
    num2 = [111,222,333,444]  #引用为 1
    
    # append()的函数使用了像列表末尾增加元素的
    num1.append(num2)  # 此时列表就变成了[1,2,3,4,5,[111,222,333,444]]引用为2
    num2.append(num1)  # 此时列表就变成了[111, 222, 333, 444, [1, 2, 3, 4, 5, [...]]] 引用为2
    
    del num1  # 引用为1
    del num2  # 引用为1
    	当内存占用达到临界值的时候 程序会自动停止 然后扫描程序中的所有的数据
        并给只产生循环引用的数据打上标记之后一次性清除
    

这个时候我们用不到,程序也不回收也会产生垃圾,这个时候就需要,引用回收,来解决内存占用过大

image

image

分代回收

垃圾回收每过1分钟就会遍历一遍内存,查看是否有需要回收的,如果一直长时间频繁的遍历也会导致内存暴涨影响程序,是因为,垃圾回收也是一套程序。此时标记回收就突出他的优势

image

流程控制

在现实生活中,我们做的每件事也是有一定流程去执行

流程控制基础

顺序结构流程

按照从上到下语句依次执行

print('开始')
name = input('输入姓名')
print(name)
print('结束')

image

分支结构流程

分条件执行

单分支

# if 判断条件:
	# 制表符 代码片段

age = input('请输入年龄')
age = int(age)  # int() 强制转换数据类型但是只能转换字符型数字
if age<28:
    print('小姐姐')

image

双分支

# if 判断条件:
#	代码块
# else:
#	代码块
age = input('请输入年龄')
age = int(age)  # int() 强制转换数据类型但是只能转换字符型数字
if age<28:
    print('小姐姐')
else:
    print('老北鼻')
    

image

多分支

# if 判断条件:
#	代码
#elif 判断条件:
#	代码
#elif 判断条件:
#	代码
#elif 判断条件:
#	代码
#else:
#	代码
#结束
score = input()
score = int(score)
if score > 90:
    print('优')
elif score > 80:
    print('良')
elif score > 70:
    print('中')
elif score > 60:
    print('及格')
else:
    print('不及格')

image

循环结构流程

while循环

#  while 判断语句:  # 如果成立者向下执行
#		代码
#  会一直输出看妹子

while 1:
    print('看妹子,看妹子')

image
image

while循环嵌套if分支

#让一些代码反复的执行
# 先判断条件是否成立
# 条件成立则执行循环体代码
# 循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
# 循环往复判断 直到条件不成立才会结束循环体代码的执行
# while 判断条件:  
#   循环体
#	if 判断条件:
#		代码
#	elif 判断条件:
#		代码
#	else:
#		代码
age = input('请输入年龄')
age = int(age)
while age > 16:
    if age < 25:
        print('正值青春年华')
        if age == 21:
            print('谈婚论价')
    elif age < 35:
        print('面临中年危机')
    else:
        print('老年养老')
    age -= 100
    
break  # 强行结束循环体
continue  # 立即结束本次循环,开始下次循环 直接跳转到条件判断处
while 判断条件:
    循环体
    循环体遇到continue立即结束本次循环

image

image

while else 循环

name = input('请输入姓名')
while name == '张三':
    print(name)
else:
    print('你是谁啊')

image

image

标签:代码,age,回收,while,垃圾,print,流程,引用
From: https://www.cnblogs.com/clever-cat/p/16735535.html

相关文章

  • 垃圾回收机制及流程控制
    1、昨日内容回顾布尔值(bool)常见的布尔值为False的数据值、布尔值的变量的命名方式。元组(tuple)不可变数据类型。集合(set)用来做成员运算、空集合。计算机......
  • 流程控制
    今日内容回顾垃圾回收机制流程控制理论流程控制之分支结构(重要)流程控制之循环结构(重要)今日内容回顾详情垃圾回收机制1.引用计数引用计数是计算机编程语言中的一......
  • 软件测试的流程
    1.需求分析2.编写测试用例(测什么怎么测)3.评审测试用例4.搭建测试环境5.等待程序开发包6.部署测试包7.冒烟测试(测试主体功能是否有问题)8.执行测试用例9.bug跟踪处......
  • 内存回收、流程控制和循环
    垃圾回收机制"""有一些语言内存空间的申请和释放都需要程序员自己写代码才可以完成但是python却不需要通过垃圾回收机制自动管理"""1.引用计数name='jason'......
  • 垃圾回收机制GC
    垃圾回收机制GC我们已经知道,name='leethon'这一赋值变量的操作,是将变量与数据值相绑定。而数据值是存储到内存中的,有时变量会重新赋值即绑定其他数据值,而使得原本的数......
  • 通过Thread Pool Executor类解析线程池执行任务的核心流程
    摘要:ThreadPoolExecutor是Java线程池中最核心的类之一,它能够保证线程池按照正常的业务逻辑执行任务,并通过原子方式更新线程池每个阶段的状态。本文分享自华为云社区《【高......
  • C# 手动回收
    1、正常C#是继承GC,是无需手动回收释放,但是有时候确实遇到相关异常报错,手动释放是可以的finally{if(conn!=null&&conn.State!=Con......
  • Java流程控制05(switch多选择结构)
    多选择结构还有一个实现方式就是switchcase语句switchcase语句判断一个变量与一系列值中的某个值是否相等,每个值称为一个分支语法:switch(表达式){casevalue......
  • Java流程控制01(Scanner)
    用户交互Scanner:之前学习的基本语法中,我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入"Java.util.Scanner"是Java5的新特征,我......
  • MySQL 的一条语句的执行流程
    分为客户端,服务端,存储引擎三部分。mysql8.0后,取消缓存。1.myisam和innodb的区别。Mysql的InnoDB和MyISAM存储引擎的常见区别如下:锁支持:MyISAM只有表级锁(table-lev......