技术的快乐
· 阅读需 2 分钟
我还是很喜欢写代码的,享受纯粹的快乐。比跟人打交道还是好太多了,踏踏实实的感觉。
之前公司开发了一个排版系统,要把非常多图片渲染都一个画布上,在宽度相同的情况下要求高度尽可能小。 我用笨办法贪心算法搞定了,也上线了很久。
这几天客户来反馈问题,说经常在大量图片的情况下,容易出现浏览器崩溃。刚开始以为是客户机器不行,毕竟我 自己这里一次都没有出现过崩溃的问题,结果客户机器内存64G,太富裕了。
本来不急的问题,但是在好奇心的驱使下,好好检查了一下这个问题。从浏览器的自动工具慢慢分析,确实是发现存在内存泄露的问题
一旦进行大量图片的排版,内存直接飙到了1.4G。虽然再重复操作内存也不会增加了。应该浏览器做了优化。 但是确实也不应该一下子内存达到这么高的水平。
在没有目标压力的情况下,慢慢分析问题,抽丝剥茧。慢慢问题浮出水面了。原来是我在计算位置的时候,使用了一个大矩阵。 虽然我用完就回收了,但是浏览器并不会这么快回收这块内存。造成了泄露。
然后在ai的帮助下,采用了更加灵巧的办法解决问题,内存一下控制在400Mb以内了。但是也带来了弊端,就是整体运行的速度慢了不少。
其实也很好理解,我原来的笨办法是用空间换时间,现在是用时间换空间。大部分的算法,只能在这两者之间进行取舍。
整体慢慢发现问题,解决问题感觉很好,看到我再怎么操作,内存始终控制在500Mb以内,就很有成就感,单纯的写代码,解决问题的快乐。