问题标签 [retained-in-memory]

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 回答
354 浏览

vb6 - VB6 Web 应用程序 - RM 或非 RM - 真的很重要吗?

我支持旧版 VB6 Web 应用程序。我们通常尝试使用 Retained in Memory (RM) 组件。但是,某些组件是从 Windows 应用程序“借来的”。由于这些组件包含表单,因此不能将它们标记为 RM。因此,我们目前混合使用了 RM 和非 RM 组件。

已经提出了一个问题,“可以使用所有组件的非 RM 版本吗?”

似乎走这条路可能会导致可扩展性和性能问题。有人对此有经验吗?

0 投票
1 回答
5126 浏览

cocoa - AppDelegate 被不同的类访问,来自 RootController.m

我的问题是从控制器(恰好是我的 rootViewController)获取信息到另一个视图。在尝试通过应用程序委托访问它时,我无法让它工作。我已经找到了如何做到这一点,但这反过来又产生了另一个问题,即在模态视图控制器中获取视图以实际显示数据。下面我发布了 appDelegate 信息和 NSMutable Dictionary 解决方案代码,供那些可能也需要帮助的人使用。

我已经尝试了一个多星期来自己解决这个问题。我的问题最终是如何访问 appDelegate,这就是我遇到 NSDictionary 问题的原因。所以最终问题不是 NSDictionary,尽管我敢肯定,如果我走得更远,那将是一个问题。

首先,我要感谢 TechZen 帮助我看到我已经过度编程,并为我指明了正确的方向。

这是我学到的。

在 appDelegate 中分配您的变量。

AppDelegate.h

AppDelegate.m

在 ViewController.m 中将变量分配给 appDelegate。我在 tableView 函数 didSelectRowAtIndexPath 中执行了此操作。

现在在您的视图控制器中,您想从 appDelegate 加载变量,像这样设置它。

在 viewController.m 文件中;

.....并将其分配给您现在想要的任何东西!

我希望这对每个人都有帮助。此时您可以将 NSArray 从那里放到 NSDictionary 中,但是现在使用键和值进行访问,因此此时访问有点复杂,但当然有优势。我还不能完全把它弄下来,现在已经放弃了这种方法,只使用一个 NSArray 。

下面是 Makers h 和 m 文件的示例,您也可以查看。

及其 Maker.m 文件;

我希望这可以帮助其他人弄清楚这一点,因为这确实花费了我很多时间,我希望你能从我学到的东西中有所收获。

真诚的,柯克

0 投票
1 回答
4613 浏览

sqlite - Sqlite 和其他嵌入式数据库的内存表功能

我正在寻找一种功能,在该功能中,我可以将一些数据保留在内存表中以供经常使用,而将不太常见的数据保留在普通表中(在磁盘上)。这可以在 sqlite 中使用 attach 命令来实现,但问题是如果我必须同时查询两个表(在内存表和普通表中),我必须做一个联合。这是一种解决方法(我想避免联合),但我想知道 sqlite 是否有任何内置机制用于此目的?此外,很高兴知道 sqlite 是否是嵌入式世界中此类工作的最佳人选?或者是否有任何商业嵌入式数据库可以在这种情况下正常工作。期待答案。

谢谢你的期待 Nadeem

0 投票
1 回答
3174 浏览

ruby-on-rails-3 - Rails3:在视图中渲染内存图像

我有一个 rails 应用程序,它在控制器的内存中有一个由spark_pr生成的 png 文件。

我想在我的视图中呈现这个 png 文件,即 app/views/users/show.html.erb,它具有由 Rails 脚手架生成器生成的标准内容,其中显示了 @user 的各种属性。

如何在我的视图中呈现此内存文件 (@pngfile)?我不想保存文件,也不想为该文件提供临时 URL。我已经看到在 HTML 页面上使用从二进制 blob 呈现的内联图标来完成此操作,所以我知道这是可能的。但是我想不出让这成为可能的 Rails 视图助手的魔法咒语。

------------ 编辑:更多信息 -------------

该站点提供了有关如何嵌入 URL 的更多信息。文件夹图标的代码如下所示:

我在我的视图中嵌入了这个确切的代码,它适用于 Chrome、Firefox 和 IE9。

所以我试着用我的火花图来做这件事。

在我的 Rails 控制器中,我这样做了:

在我看来,我尝试了一些不同的技巧

除了第二个之外,它们都失败了,它在 Chrome 和 Firefox 中有效,但在 IE9 中无效。第一个应该可以工作,但默认情况下,image_tag 帮助程序的代码会在我的 URL 前添加“/images/”,即使它是直接数据 URL。我知道这一点,因为我试图在不同的选项卡中查看图像,但它失败了。但是当我去掉“/images/”部分时,它工作得很好。我不知道为什么第二个有效。我只是一时兴起试了一下。第三个失败了,因为看起来字符串的某些部分由于特殊字符而被分解。我尝试在第四个中使用原始字符串,但它也不起作用。

在这一点上,我难住了。我是否尝试对 image_tag 进行猴子修补,以便它不会为数据添加内容:嵌入图像的 URL,或者我是否对字符串做一些时髦的事情,以便它像视图示例 3 或 4 一样正确呈现?

0 投票
4 回答
3060 浏览

java - java中字符串的保留堆大小

这是一个我们难以理解的问题。用文字来描述它很棘手,但我希望能理解其要点。

我知道字符串的实际内容包含在内部 char 数组中。在正常情况下,字符串的保留堆大小将包括 40 个字节加上字符数组的大小。这是解释here。调用子字符串时,字符数组保留对原始字符串的引用,因此字符数组的保留大小可能比字符串本身大很多。

然而,当使用 Yourkit 或 MAT 分析内存使用情况时,似乎会发生一些奇怪的事情。引用 char 数组的保留大小的字符串不包括字符数组的保留大小。

一个例子可能如下(半伪代码):

字符串的保留大小定义为 24 字节,不包括字符数组的保留大小。如果由于许多子字符串操作而对字符数组有很多引用,这可能是有意义的。

现在,当此字符串包含在某种类型的集合(例如数组或列表)中时,此数组的保留大小将包括所有字符串的保留大小,包括字符数组的保留大小。

那么我们就有这样的情况:

因此,您必须查看每个数组条目以尝试找出保留大小的来源。

同样,这可以解释为数组包含所有包含对同一字符数组的引用的字符串,因此数组的保留大小完全是正确的。

现在我们解决问题。

我在一个单独的对象中保存了对上面讨论的数组的引用以及具有相同字符串的不同数组。在这两个数组中,字符串引用相同的字符数组。这是意料之中的——毕竟我们谈论的是同一个字符串。然而,这个字符数组的保留大小被计算在这个新对象中的两个数组中。换句话说,保留的大小似乎是两倍。如果我删除第一个数组,那么第二个数组仍将保存对字符数组的引用,反之亦然。这会导致混淆,因为似乎 java 持有对同一个字符数组的两个单独的引用。怎么会这样?这是java的内存问题还是仅仅是分析器显示信息的方式?

这个问题让我们在尝试追踪应用程序中的大量内存使用情况时非常头疼。

再次 - 我希望那里的人能够理解并解释这个问题。

谢谢你的帮助

0 投票
1 回答
339 浏览

objective-c - 切换视图控制器时如何保留 UIDatePicker 和 UITextField 值?

我有两个视图控制器。视图控制器 #2 具有 aUIDatePicker和 a UITextField

如果我回到 View Controller #1 然后再回到 View Controller #2,UIDatePicker 已经丢失了之前选择的日期,并且 UITextField 是空白的。

它是这样初始化的:

我正在使用 Push Segue 进入第二个视图控制器并使用以下方法返回:

如何“保存” UIDatePicker 日期和 UITextField 值,以便在返回该视图控制器时始终存在?

我搜索并找到了意见、假设和建议,但没有解决方案。

谢谢你。

0 投票
2 回答
403 浏览

ios - 这如何防止块保留循环?

我在这里看到了防止块保留周期的解决方案

但是我很难理解它为什么或什至是如何工作的。

在示例中,进行了弱自引用并对其进行了操作。我可以看到这是如何打破循环的。但是,在块内会创建一个强引用。这不会重新创建我们最初试图阻止的保留周期吗?

比如说self是0x123,那么weakself也指向0x123。然后 strongSelf 将在块内设置为 0x123。
这不会形成一个保留循环吗?(self 对 block 有很强的引用,而 strongSelf 对 self 有很强的引用)

0 投票
1 回答
129 浏览

android - 是否可以在 OnStop() 回收所有数据并使用保留片段?

1)在活动的 OnStop 方法中回收所有位图和数据被认为是一种很好的策略。

2)使用保持器片段来避免在每次配置更改时重新创建数据也被认为是一种很好的策略。但我不明白这两者如何结合?

假设我使用一个片段来加载一堆位图......在 OnCreate 我检查该片段是否为空以获取它的数据或实例化一个新的来创建它们。如果我在 OnStop() 回收我的所有位图,那么在配置更改时将没有任何剩余检索,因为所有数据都将被回收。

所以....我看不出有任何方法可以将这两种策略结合起来。我错了吗?如果不是,最好使用两者中的哪一个?

我的案例是关于从 SD 卡文件夹加载图像。可能只有一张图片,可能是 500 ......并且显示图片并不是我的应用程序所做的全部,因此在此活动之后可能需要其他活动来获取内存。

0 投票
1 回答
2209 浏览

swift - takeUnretainedValue 和 takeRetainedValue 有什么区别?

takeUnretainedValue和有什么区别takeRetainedValue?根据 Apple 的文档:

这两种方法都返回对象的原始未包装类型。您可以根据所调用的 API 返回未保留对象还是保留对象来选择要使用的方法。

但是我怎么知道非托管对象是非保留对象还是保留对象呢?例如,框架中的方法ABAddressBookCreateWithOptions:返回AddressBook一个非托管对象ABAddressBook,一些教程将其视为保留对象。使用时ALAsset,该方法thumbnail返回一个非托管对象CGImage,一些教程将其视为未保留对象。

我会感谢你的帮助。

0 投票
1 回答
72 浏览

node.js - 节点.js。内存泄漏在哪里?

我试图在我的快照中找到内存泄漏。 快照 1 快照 2

我看到一个数组正在增长,但我在里面找不到任何泄漏。

感谢帮助。