ThreadLocal LinkedSlotVolatile<SqlSugarClient> 返回

SqlSugar
11 111
该叫什么 dxy 发布于2周前
悬赏:0 飞吻

在项目运行中,内存会随着时间递增,用dotMemory工具分析,占用内存的是 

Sparse arrays inspection

Type, Wasted, Filling, Length, Used

System.Threading.ThreadLocal+LinkedSlotVolatile<SqlSugarClient>[], 33554416, 0.0%, 4194304, 2

从分析结果来看,是因为SqlSugarClient 资源未及时释放导致

如下图:


image.png

热忱回答11

  • sqlsugarscope你没有单例

    0 回复
  • 用sqlsugarscope一定要单例

    0 回复
  • dxy dxy VIP0
    2周前

    @fate sta:我用的 SqlSugarClient,没有用 sqlsugarscope

    0 回复
  • System.Threading.ThreadLocal 那这个对象哪来的 

    0 回复
  • 只有sqlsugarscope才会用到这个对象

    0 回复
  • 检查一下代码,F5搜索一下

    0 回复
  • dxy dxy VIP0
    2周前

    @fate staimage.pngimage.png

    全文搜索只有这2个类用到了

    0 回复
  • @dxy:你搜索你的代码,这个代码ORM只有SqlSugarScope才用到,你要找有没有SqlSugarScope或者你用了ThreadLocal

    0 回复
  • dxy dxy VIP0
    2周前

    @fate sta:我的项目中, 用到了2种数据库,mysql用的 SqlSugarClient 用AddScoped注入,sqlite 用的 SqlSugarScope 用AddScoped注入没有用单例,在实际操作中,sqlite 在初始化以后,我只会在后台操作一次读取sqlite部分表里面数据,后续不会再用到且我会重启我的服务,这样也会导致内存一直递增吗?


    0 回复
  • dxy dxy VIP0
    2周前

    @fate sta:好的, 我先把SqlSugarScope改成单例,非常感谢

    0 回复
  • @dxy:对的SqlSugarScope 必须单例,不能Scoped 这样会占内存

    0 回复