String驻留带来的危害

原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com

前段时间接手了一个项目优化工作,在同等场景下内存使用从4G降低到200M。

项目是将实体序列化成字符串存入Redis, 再从Redis取出字符串反序列化,乍看没什么问题。

这里忽略了一个事实,CLR会在内存驻留字符串,本意是调优性能,防止重复字符串带来的开销。由于这个项目中这种序列化的字符串没有任何重用的价值,且个头不小。在频繁交互下内存使用一路上涨。

CLR没有提供消除预留字符串的方式,只能避开这个问题,那就是不使用字符串,改用Byte[]。

Byte[]使用完毕会被GC回收,自然内存就降下来了。

时间: 2024-10-31 06:07:59

String驻留带来的危害的相关文章

C#中的string驻留池

刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例.如下: String s1 = "Hello";String s2 = "Hello"; //s2和s1的实际值都是"Hello"bool same = (object) s1 == (object) s2; //这里比较s1.s2是否引用了同一个对象实例 //所以不能写作bool same =

环创环保:加湿器使用不当带来的危害引起你的重视了吗?

冬季寒冷干燥,尤其是烘暖之后经常会有口干舌燥.嗓子疼.皮肤干裂这些症状,为了这些症状能有所缓解,人们生活在室内更舒适些,加湿器就成了我们日常生活的必须品. 加湿器是一种增加房间湿度的家用电器.一般情况下,温度能够直接影响人们对生活环境的感受.同样,空气湿度与人体健康以及日常生活也有着密切的联系.大部分人都只是知道加湿器给我们带来的一些方便,而却忽视了它产生的一些危害,你知道加湿器的危害有哪些吗? 加湿器使用后一定要定期清理,若不及时清理,加湿器中的霉菌等微生物随着气雾进入空气,再进入人的呼吸道中

sql传统的拼接带来的危害

现在大家来学习下sql是如何注入的,传统的拼接字符串会造成 注入形式就是在变量那使用<1=1>这样查询无论怎样都是正确的 -- var sql = "select name from person where name='"+\n 1=1+"'"; //不建议的写法 var sql = "select name from person where name='"+username+"'"; connection.q

失眠危害有哪些

失眠危害有哪些.太原科大失眠抑郁研究所主任表示:失眠是一种生活中的常见病.很多人认为一旦失眠,吃一点安眠药就可以了,没必要去医院接受检查.其实,失眠并不是你所想像的那么简单,失眠久了是会对我们的身体健康带来很多危害的.那么,失眠的危害有哪些呢?我们来了解一下. 失眠危害有哪些呢 1.容易引起感冒. 因为失眠可降低人体的免疫力,从而使人体低抗力下降,易感冒或产生其他疾病. 2.使人过早衰老. 失眠使人的记忆力.注意力和思维判断力受到干挠,脑功能减退导致性腺功能降低,引起机体过早衰老. 3.影响青少

前列腺痛有哪些危害

来源:成都曙光男科医院 -成都男科医院-前列腺痛有哪些危害 很多男性都会被前列腺痛所困扰,那么前列腺痛究竟都会带来哪些危害呢?前列腺痛不是一个病而是一组综合征. 1. 出现尿频.尿急.尿疼.尿急,排尿困难的感觉,影响男性正常的工作和学习. 2. 前列腺液的分泌量减少,因而精液量减少,粘稠度增高,排出后液化时间延长,会影响到精子的生存和活力,可导致不育的情况发生. 3. 患有前列腺痛会导致一些性功能障碍,常见的有性欲减退.阳萎.早泄.遗精过频.血精.射精疼痛等,严重的时候可影响夫妻感情,影响家庭的

J2EE基础知识点总结

J2SE基础 1.     九种基本数据类型的大小,以及他们的封装类. 基本类型 大小(字节)      默认值    封装类 byte         1           (byte)0     Byte short        2           (short)0   Short int           4               0        Integer long         8              0L      Long float        4

Java程序员11面阿里,错失offer,期间还面了EMC+网易+美团......

一直在面阿里,从提前批投蚂蚁中间件与阿里中间件,最后阿里中间件面完了hr,但是很遗憾最后没能进,被调到了盒马.不过最终还是拿到了盒马的offer.期间还面了EMC.网易.携程(水到不行).美团.拼多多,目前出了美团跟拼多多没有出结果,其他几家公司也都顺利拿到意向,在此回馈一波大家. 面经部分出自阿里,其他几家公司有少部分补充,内容是个人整理,如有不对,还请纠正,谢谢! 网络编程ISO模型与协议 应用层:为操作系统或网络应用程序提供访问网络服务的接口.协议Telnet.FTP.HTTP.SNMP.

多线程

1.线程的概念? 多线程,就类似与操作系统中的多进程.简单的讲,就是可 以同时并发执行多个任务,处理多件事情.这与我们经常所 谓的边唱边跳,边说边做事一个道理.? 线程是一个轻量级的进程,一个进程中可以分为多个线程. 比起进程,线程所耗费的系统资源更少,切换更加容易 /* * 进程是操作系统中的一个任务,一个程序启动运行,就会创建 * 一个(或多个)进程. * 线程是轻量级的进程.进程会有自己独立的内存空间与资源.一个进程 * 下会存在一个(或多个)线程.线程为进程的执行单元.线程本身不含有 *

Beetl2.2使用说明书20151201

李家智<[email protected]> Table of Contents 1. 什么是Beetl 2. 基本用法 2.1. 从GroupTemplate开始 2.2. 模板基础配置 2.3. 模板资源加载器 2.4. 定界符与占位符号 2.5. 注释 2.6. 临时变量定义 2.7. 全局变量定义 2.8. 共享变量 2.9. 模板变量 2.10. 引用属性 2.11. 算数表达式 2.12. 逻辑表达式 2.13. 循环语句 2.14. 条件语句 2.15. try-catch 2.