小程序canvas层级太高的解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序canvas层级太高的解决办法相关的知识,希望对你有一定的参考价值。

参考技术A 本文章记录了我在做小程序时使用canvas时,因层级太高无法显示弹框的问题。

首先是在wxml页面的处理,我的宽高设置的是自适应宽高,只需改成自己的宽高即可,关键部分是加一个判断 wx:if="!canvasImg"

然后是js页面,弹框结束时直接 canvasImg=null 即可

参考 https://blog.csdn.net/weixin_45272449/article/details/101295243?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

Win10系统内存占用率太高的解决办法,怎么办?

作者:1466
链接:https://www.zhihu.com/question/39716538/answer/883031599
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

关于任务管理器内存的详细科普,欲求甚解可直接由此往下看:

        任务管理器上显示的每个进程占用的内存,是进程的专用内存,即进程运行的时候,这部分就被它占着,不能被其他程序使用。

        而实际上每个进程占用的内存并不是那么多,只是还有一部分占用的内存是可共享内存,即在你运行其他程序而内存不够时,其他程序可能会抢占可共享的内存,有些程序会因此而崩溃

而所有进程的专用内存可共享内存加起来,才是任务管理器中的使用中内存,也就是你所看见的使用量,并且算内存占用率的时候,也是用这部分内存除以总可用内存,因为这两部分都是真的存在你的内存条里的部分,所以是真正字面意义上的内存使用率

为什么要强调总"可用"内存呢?因为实际上有一部分内存是不可用的,为硬件保留的内存,供BIOS,各类硬件驱动使用,一般你接的外部设备越多,这部分占用就越大,保留内存大小过大时的解决办法会在问题解决部分提到.总之,你电脑实际安装的内存=(物理)总可用内存+为硬件保留的内存,

在任务管理器-性能-内存,显示的信息所代表的含义:

使用中:当前所有进程申请的,且实际存储在内存条里的内存的量

已压缩:win10引入了内存压缩技术,被压缩的内存占用,同样是在内存条里

可用:内存条的总可用内存-使用中内存

已提交(斜线左侧):这是所有进程申请的内存空间,一定比已使用的大,进程申请了空间,但是并不一定就全占了,如果你开启了虚拟内存(其实应该叫分页文件),有一部分可能在分页文件里,而就算你没有启用分页文件,也并不是申请了多少,就在内存条里占用多少的,所以你会发觉已提交不管怎样都比使用中的内存要大,而已提交接近峰值时,再开应用程序,就已经可能出现崩溃了,因此只看使用中的内存并不准确

已提交(斜线右侧):你系统可以使用的逻辑内存总量,windows中将内存一视同仁为逻辑内存,逻辑内存总量=(物理)总可用内存+分页文件,一些存在内存条里的,不常用的内存,windows会将其移动到磁盘的pagefile.sys,即分页文件内

为什么叫分页这个奇怪的名字呢,因为windows使用了页式存储管理内存,就是把你的所有内存当成了一本书一样,然后划分成一页一页这样的区块,这样使用页号就能定位某个区块,再告诉系统是这页的第几个"字",系统就能快速知道要存要用的内存在哪里了,而把这本书的一部分页面,放到磁盘上,自然就叫它"分页"了(不过英文只是简单地称作pagefile)

已缓存:windows会将一些数据存到物理内存中,提升系统的速度,当需要内存时,这部分空间会自动释放,因此不必顾忌,这部分内存虽然被使用了,但并不是占用,不是"霸着位置",是可以随时让出位置的,起加速作用的内存,并不属于"使用中的内存"

分页缓冲池&非分页缓冲池:这两部分内容存储的都是系统的内核和驱动程序,区别是,分页缓冲池的内容是存在磁盘上的,而非分页缓冲池的内容是存在物理内存中的(而且是必须存在物理内存中的)

在资源监视器中,你可以看到更详细的内容,"为硬件保留的内存","可共享","专用"同上,"正在使用"等同于"使用中的内存","备用"大体等同于"已缓存",剩下的:

已修改:有部分内容被放到了内存中,但在使用时又必须移到硬盘内,这部分为已修改内存(已修改+备用=已缓存)

可用:没放啥要用的东西,需要时被优先占用的内存

硬中断:表示访问磁盘分页文件作内存的次数,如果数量太大那么说明物理内存不足

提交:操作系统为进程保留的虚拟内存

工作集:进程当前在物理内存上实际占用的量

问题解决

首先关于题主的问题,一方面时间久远应该不需要解答了,另一方面,实际上对于64位的win10系统,4G内存开机占60%是正常现象

一般用户的开机启动内容在500MB以内,而4G,8G内存的win10 64位系统,一般开机启动系统自身就会占用1.5-2.5GB内存,16G内存的则占用在2.5G-3.5G,内存越大吃的越多,系统也越快,只有达到一定程度(比如128GB内存),系统才不会继续吃更多,而32位系统则占用的更少(理论上少一半,实际上由于各种优化存在,并不会如此)

下面讲解一般情况下问题的排查解决方式:

首先正常开机,不要人为打开任何程序,然后打开任务管理器,点击用户标签页,查看内存占用,一般包含常规的启动项在内,这部分小于500MB是比较正常的,如果明显较大,那么应该是你的启动项有内存占用大户,你可以直接在任务管理器进程页,点击内存排序,查看有没有内存占用较大的程序.

要关闭自启动程序,你可以检查:

  1. 任务管理器-启动
  2. C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp
  3. win+R -> taskschd.msc -> 任务计划程序库 -> 上次运行时间降序
  4. win+R -> regedit -> HKEY_LOCAL_MACHINE(以及HKEY_CURRENT_USER)\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run
  5. win+R -> services.msc(双击打开项目,启动类型设为禁用)
  6. win+R -> msconfig -> 服务 -> 可选隐藏所有Microsoft服务,及全部禁用
  7. win+R -> gpedit.msc(家庭版win10没有) -> 计算机配置/用户配置 -> 管理模板 -> 系统 -> 登录 -> 在用户登录时运行这些程序
  8. win+R -> gpedit.msc(家庭版win10没有) -> 计算机配置/用户配置 -> Windows设置 -> 脚本(启动/关机) -> 启动

这可以解决大部分第三方程序的占用问题,对于系统程序异常内存占用问题,你可以尝试:

win+R -> cmd -> sfc /scannow

这可以修复很多系统问题,也包括开始菜单频繁假死之类,你可以从此处查看更多说明:

使用系统文件检查器工具修复丢失或损坏的系统文件​support.microsoft.com

另外,核显也会占用一部分内存作为显存,但一般量比较小(常规桌面使用,网页浏览,一般在100MB-500MB),你可以在任务管理器-性能-GPU查看共享GPU内存占用,如果出现异常可以尝试更新显卡驱动,独显也会使用内存,但是都有专用显存,一般不会出问题

关于为硬件保留的内存异常占用:

首先你的核显用作显存的内存并不会在此类,这是供BIOS,各类硬件驱动使用的内存

  1. win+R -> dxdiag,查看中间的操作系统是不是64位,如果是32位,恐怕只能重装64位解决
  2. win+R -> msconfig -> 引导 -> 高级选项,取消勾选处理器个数和最大内存
  3. 你的主板可能保留了很多内存,你需要进BIOS查看是否有相关设置
  4. 你的内存可能安装有问题,windows识别到了,但无法正常使用,会被标记为为硬件保留,你要查查你的计算机主板或者笔记本随附手册,了解内存安装说明

已压缩内存为0:

右击任务栏的windows徽标,以管理员模式启动powershell(或者启动管理员命令提示符,再输入powershell启动),输入get-mmagent,查看MemoryCompression,PageCombining是否为False,若是,分别输入enable-mmagent -mc和enable-mmagent -pc设置为True

此外有部分推荐关闭Superfetch服务的(自17682版本的win10开始,你应该找不到Superfetch服务,因为它改名叫SysMain了(微软改名部又立功了)),本人亲测开关后,内存占用变化没啥明显感觉,开着有助于系统更快,它可以尝试判断将要运行的程序,预读到内存,前面的MemoryCompression,PageCombining也依赖于此

  • 不过我觉得搜索到这个问题的人,更多的是想确认一个事实
  • 即4G,8G内存的win10 64位系统,一般开机启动系统自身就会占用1.5-2.5GB内存,16G内存的则占用在2.5G-3.5G,且内存越大吃的越多,系统也越快,只有达到一定程度(比如128GB内存),系统才不会继续吃更多,而32位系统则占用的更少(理论上少一半,实际上由于各种优化存在,并不会如此)
  • 你可以做一个简单的减法,在任务管理器-性能页查看使用中的内存,然后减去任务管理器-用户页的内存,再减去性能页GPU的共享内存,剩下的数量在刚开机的时候,应该大致符合上一条所说的规律,并且即使开机使用较长时间,应该也是一个比较稳定的数量,这就说明你电脑的内存占用是正常的

以上是关于小程序canvas层级太高的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Win10系统内存占用率太高的解决办法,怎么办?

Win10系统内存占用率太高的解决办法,怎么办?

Win10系统内存占用率太高的解决办法,怎么办?

微信小程序开发中遇到的坑及解决办法

微信小程序原生组件层级过高的解决方法

video 在移动端浏览器变现的层级太高,总是在最高层,如何解决;