时间:2021-07-01 10:21:17 帮助过:1人阅读
MySQL的连接算一个进程,gd的画图算什么呢?内存吗?
为什么画布特别耗费资源呢?消耗的是那部分资源呢?CPU?内存?还是其他?
希望懂的朋友给点指示谢谢
MySQL关闭(也算一种销毁吧)的是连接,
gd销毁的是画布。
MySQL的连接算一个进程,gd的画图算什么呢?内存吗?
为什么画布特别耗费资源呢?消耗的是那部分资源呢?CPU?内存?还是其他?
希望懂的朋友给点指示谢谢
1.MySQL 连接是线程,不是进程
客户端发起连接到 mysql server,mysql server 监听进程,监听到新的请求,然后 mysql 为其分配一个新的 thread,去处理此请求。从建立连接之开始,CPU 要给它划分一定的 thread stack,然后进行用户身份认证,建立上下文信息,最后请求完成,关闭连接,同时释放资源,在高并发的情况下,将给系统带来巨大的压力,不能保证性能。所以,mysql 通过线程缓存来是实现线程重用,减小这部分的消耗;一个 connection 断开,并不销毁承载其的线程,而是将此线程放入线程缓冲区,并处于挂起状态,当下一个新的 Connection 到来时,首先去线程缓冲区去查找是否有空闲的线程,如果有,则使用之,如果没有则新建线程。
2.gd释放,是释放内存
将图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,就需要及时清除画布占用的所有内存资源。
简单的来说,gd消耗的资源里最起码有内存。
你知道,图像相对文字来说,储存的信息是海量的,很费内存。
在开始使用gd的时候,会给画布分配大量的内存。
当你使用完的时候,这部分内存没有用了,当然要释放。
至于具体gd会使用到哪些资源,这个和gd的实现相关。
像文件打开/关闭,数据库连接/断开,内存申请/释放等这种成对的,在用完资源的之后,养成释放的好习惯。