前段時(shí)間接手了一個(gè)項(xiàng)目優(yōu)化工作,在同等場景下內(nèi)存使用從4G降低到200M。
項(xiàng)目是將實(shí)體序列化成字符串存入Redis, 再從Redis取出字符串反序列化,乍看沒什么問題。這里忽略了一個(gè)事實(shí),CLR會(huì)在內(nèi)存駐留字符串,本意是調(diào)優(yōu)性能,防止重復(fù)字符串帶來的開銷。由于這個(gè)項(xiàng)目中這種序列化的字符串沒有任何重用的價(jià)值,且個(gè)頭不小。在頻繁交互下內(nèi)存使用一路上漲。CLR沒有提供消除預(yù)留字符串的方式,只能避開這個(gè)問題,那就是不使用字符串,改用Byte[]。Byte[]使用完畢會(huì)被GC回收,自然內(nèi)存就降下來了。新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注