问题标签 [recycle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7717 浏览

android - Android:临时位图的“尝试使用回收的位图”错误

我的应用程序可以加载相当大的图像。为了节省内存,我尝试使用一个临时位图来加载,另一个用于转换后的最终图像:

现在,此时我们已经完成了 tempBitmap,它只需要将解码的 Bitmap 传输到 createBitmap 中的转换步骤。所以:

并且...它因“尝试使用回收的位图”错误而崩溃,具体是因为 tempBitmap 的回收。tempBitmap 未显示,仅在此处使用。

这里出了什么问题?我是否应该始终使用“finalBitmap”并依靠 createBitmap 来管理它(finalBitmap = Bitmap.createBitmap( finalBitmap , ....))?我看不到对 tempBitmap 的持续依赖会导致这样的失败。

编辑:是的,空赋值似乎会导致适当的最终垃圾收集,但我很困惑为什么临时位图上的 recycle() 在这种情况下会出现问题。我得到的印象是 createBitmap() 持有对它的引用,但为什么,以及持续多长时间?

0 投票
2 回答
1286 浏览

android - Android 位图回收

我遇到了位图回收问题。我在网格视图中显示位图。我有大约 40-50 个缩略图。当我从 url 下载拇指图像时,我将它缓存到磁盘。在 ImageView 上设置位图并调用 bitmap.recycle()。但是我不断得到回收的位图无法使用。

关于可能发生的事情的任何想法。谢谢你的帮助。我在 ImageAdapter 的 getView() 中重新使用“转换视图”

问候-Chandu

0 投票
1 回答
279 浏览

asp.net - ASP.NET 会话回收

在 ASP.NET 网站中,我们将会话存储在 SQL Server 中。一切正常,除了会话经常回收。我将超时时间设置为 30 分钟,但有时它会在几分钟内回收。我们有一个专用服务器,以及在“经典”应用程序池下运行的网站。我在这个问题上搜索了很多,但没有找到满意的答案。任何帮助将不胜感激。

注意:大多数情况下它发生在有很多使用视图状态的页面上,我很好奇是否有视图状态与会话回收的链接?

0 投票
0 回答
591 浏览

android - 关于在 Adapter 中延迟加载 Bitmaps 的共识(强调 Bitmap.recycle())

我看到一大堆建议,但没有一个(我发现)考虑到所有因素,这些因素是:

  1. 异步下载,没有重复(下载器和位图),取消下载/分配无论如何都不再需要的图像
  2. 一个适配器可以有多个相同 ID 的视图(对 getView(0) 的调用非常频繁)
  3. 不能保证视图不会丢失而不是被回收(考虑 List/GridView 调整大小或按文本过滤)
  4. 视图和数据/逻辑的分离(尽可能)
  5. 没有为每次下载启动一个单独的线程(UI 明显变慢)。使用队列/堆栈(LinkedBlockingQueue?)和线程池,或类似的......但如果 Activity 被销毁,则需要结束它。
  6. 清除距离列表/网格中当前位置足够远的位图,最好仅在需要内存时
  7. 在要丢弃的每个位图上调用 recycle()。
  8. 外部存储器可能不可用(完全或始终),如果使用,应尽快清除(仅在此处下载的图像)。还要考虑 Android 的 Activity 破坏/娱乐。
  9. 正在更改的数据:删除条目(在列表中选择、删除按钮、立即刷新)并在后台线程中添加(按需刷新列表)。应该保留已经下载的位图,只要它们链接的条目仍然存在。
  10. (可选)不要依赖 notifyDataSetChanged (afaik 刷新所有可见的、可能非常复杂的列表项)来更新单个 ImageView
  11. setTextFilterEnabled(true) (如在 ArrayAdapter 中。它的 Filterable 实现替换了其他 Adapter 方法可见的数据数组,因此更改了视图的索引,因此它们不能用作链接到位图的 ID)。
  12. 可在 ExpandableList 中使用(影响缩略图的显示顺序)

如果已经回答,请原谅我。我已经搜索了几个月,但没有找到解决方案。

要求在我看来是合理的,但每一个都增加了一个难度维度,尤其是Bitmap.recycle,需要在运行期间和Activity销毁时调用(注意onDestroy,甚至onStop都可能不会调用)。
这也排除了对 SoftReferences 的依赖,它本来可以处理其他一些问题。
是的,这是必要的,或者即使在尝试捕获中的任意数量的 gc、睡眠(甚至 20 秒)、产量和巨大的数组分配(强制控制的低内存情况)之后,我也会得到 OutOfMemoryError。
搜索“OutOfMemoryError:位图大小超出 VM 预算”或“android 位图回收”。
是的,我正在重新采样位图。

0 投票
7 回答
8613 浏览

asp.net-mvc - 人们在部署大型应用程序时如何解决应用程序池回收问题?

目前,在构建/部署我们的应用程序(58 个项目,大型 asp.net MVC 3 前端)之后,加载整个“回收应用程序池”(发布配置)需要大约 15-20 秒。

如果这会改变人们的答案,我们确实有一个网络农场,但问题确实是:

人们在维护窗口不可行的大规模应用程序中做什么(我们是一个 24/7 非常活跃的网站),以最大限度地减少部署后应用程序池回收的初始“第一次命中”?

我们已经使用了许多工具来分析启动时间,但似乎没有任何方法可以降低启动时间,所​​以我正在寻找的是人们采用哪些技术来最大限度地减少大型应用程序部署影响用户。

0 投票
2 回答
1528 浏览

android - Adapter中Bitmaps的异步下载,重点是Bitmap.recycle()

有人可以告诉我如何为异步制定一个好的机制。下载用于 ListView/GridView 的图像?有很多建议,但每一个都只考虑典型需求的一小部分。

下面我列出了一些我和我的同事无法同时满足的合理因素(要求或需要考虑的事项)。
我不是要求代码(尽管它会受到欢迎),只是一种按照描述管理位图的方法。

  1. 没有重复的下载器或位图
  2. 取消下载/分配不再需要或可能会自动删除的图像(SoftReference 等)
  3. 注意:一个适配器可以有多个相同 ID 的视图(对 getView(0) 的调用非常频繁)
  4. 注意:不能保证视图不会丢失而不是回收(考虑 List/GridView 调整大小或按文本过滤)
  5. 视图和数据/逻辑的分离(尽可能)
  6. 没有为每次下载启动单独的线程(UI 明显变慢)。使用队列/堆栈(BlockingQueue?)和线程池,或类似的......但如果活动停止,则需要结束它。
  7. 清除距离列表/网格中当前位置足够远的位图,最好仅在需要内存时
  8. 在要丢弃的每个位图上调用 recycle()。
  9. 注意:外部存储器可能不可用(完全或始终),如果使用,应尽快清除(仅在此处下载的图像)(考虑 Android 的 Activity 破坏/重新创建)
  10. 注意:可以更改数据:删除条目(多选和删除)和添加(在后台线程中)。应该保留已经下载的位图,只要它们链接的条目仍然存在。
  11. setTextFilterEnabled(true)(如果基于ArrayAdapter的机制,会影响数组索引)
  12. 可在 ExpandableList 中使用(影响缩略图的显示顺序)
  13. (可选)下载位图时,仅刷新相关的 ImageView(列表项可能非常复杂)

请不要张贴个别点的答案。我的问题是,我们越关注某些方面,其他方面就越模糊,类似于海森堡
每一个都增加了一个难度维度,尤其是Bitmap.recycle,需要在运行时和Activity销毁时调用(注意onDestroy,甚至onStop都可能不会调用)。
这也排除了对 SoftReferences 的依赖
这是必要的,否则即使在清空位图后,即使在尝试捕获(强制受控的 OutOfMemory)中进行任意数量的 gc、睡眠(甚至 20 秒)、yield 和巨大的数组分配后,我也会得到 OutOfMemoryError。
我已经重新采样位图。

0 投票
6 回答
72093 浏览

iis-7 - 如何检查上次回收的应用程序池

是否可以检查我上次回收应用程序池的时间,我想检查我的应用程序池上次回收的日期,IIS 中是否有任何东西我可以获得此信息。

0 投票
1 回答
4313 浏览

asp.net-mvc-3 - Application_End 被过早/频繁地调用

我在一个项目中使用一个临时数据库,该项目位于Application_End

问题是 Application_End 似乎在我浏览我的 Web 项目时经常被调用 - 似乎当我在数据库中编辑一个对象时,成功进行了更改,数据库被处理,并且当我被重定向到索引 - 已创建一个新数据库,并显示未更改的对象,就好像什么都没发生一样。

Application_End 不应该只在会话结束时或在一定量的空闲时间之后被调用吗?

谁能告诉我如何才能确保仅在我实际完成使用应用程序时才调用 Application_End ?

0 投票
1 回答
503 浏览

iis - Moodle IIS 崩溃

我全新安装了 Moodle 2.1、PHP v5.3、Windows Server 2008 R2、IIS、MySQL、3GB Ram、4 个 CPU。我使用 Moodle 作为学校的 VLE,但最近遇到了它没有响应的问题(浏览器只是坐着并加载,直到最终它收到网站的网络连接错误)。现在,如果我在 IIS 中重新启动“管理服务器” - 问题已得到纠正,但几天后再次出现。一些人建议增加池的“回收”时间,这似乎延迟了这个问题,但它又开始频繁发生。

我已经尝试过 Moodle 论坛,但遇到了死胡同,请有人帮忙吗?谢谢你

0 投票
1 回答
1042 浏览

android - 回收位图冰淇淋三明治力关闭

在我的 ondestroy 方法中,我回收了所有用于释放内存并防止应用程序在屏幕旋转期间崩溃的位图。事实证明,在冰淇淋三明治 (android 4.0) 之前,这对所有 api 都是正确的做法。现在,当我在 ICS 上旋转时,我会强制关闭并且 logcat 没用。我无法将其追溯到我的代码,但是当我删除位图回收时,它对 ICS 非常有用。对此有什么想法吗?