经验谈:想要打包小、运行内存少?
很多人都想要应用的内存更少,一个服务器能部署更多的应用。这需要多个方面的努力(就像接力赛):
起跑棒
使用 solon 能让内存节省 50% 左右。给了一个很好的内存“低值”,“高值”靠下面两棒了。
- 一般来讲。开发时多注意些,开发完后都是能保持节省 50% 左右的水准。
第二棒(靠架构师的选择)
选择较小的、省内存的第三方框架。选择合适的、克制的。
- 比如,HikariCP 会小些
- 比如,HikariCP 4.x 比 5.x 会小些
- 比如,mysql-connector 5.x 会比 8.x 小些
- 比如:okhttp 3.x 比 4.x 会小些
能合并的则合并,同类型的不要重复引入多套:
- 比如,用了 hutool 就尽量不加 apache common
- 比如,用了 hutool-http 就尽量不加 okhttp
话又说回来,小不是唯一原则。合适,才重要。
第三棒(靠程序员写)
开发时,节省内存
- 比如,不断的创建连接池(内容就会不断涨,直到挂掉)
- 比如,文件流读到内存(比较吃内存)。多次读,或转码,或分析,都很费内存
最后棒(看运行)
在相同请求量下,上下文数据的内存占用越少(单次内存少),响应越快(占用时间少),越省内存。
- 可以考虑合理的缓存
- 如果,并发请求量非常大,要考虑集群