zoukankan      html  css  js  c++  java
  • String驻留带来的危害

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

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

     
    项目是将实体序列化成字符串存入Redis, 再从Redis取出字符串反序列化,乍看没什么问题。
     
    这里忽略了一个事实,CLR会在内存驻留字符串,本意是调优性能,防止重复字符串带来的开销。由于这个项目中这种序列化的字符串没有任何重用的价值,且个头不小。在频繁交互下内存使用一路上涨。
     
    CLR没有提供消除预留字符串的方式,只能避开这个问题,那就是不使用字符串,改用Byte[]。
     
    Byte[]使用完毕会被GC回收,自然内存就降下来了。
  • 相关阅读:
    C++使用静态类成员时出现的一个问题
    C++中的const_cast
    【位运算与嵌入式编程】
    电压取反电路
    bzoj4769
    初赛
    noip2011day2
    uva1252
    codeforces 703d
    poj[1734]
  • 原文地址:https://www.cnblogs.com/zeeman/p/4517501.html
Copyright © 2011-2022 走看看