当我使用Instruments Leaks运行我的iPhone应用程序,并使用NSDateFormatter解析一堆NSDates时,我的内存会增加约1MB并保持不变,尽管这些NSDates在解析后应该被dealloc'd(如果它们不是新的,则我只是丢弃它们)。
我认为malloc(在下面最重的堆栈跟踪中)可能会成为NSDate的一部分,但我也认为它可能是在解析的某个中间步骤中仅使用的内存。有人知道它是哪一个或如何找出吗?
此外,是否有办法在NSDate dealloc上设置断点,以查看是否真的回收了该内存?
以下是用于解析这些日期的我的日期格式化程序的外观:
以下是内存占用过高并停留时的最重要堆栈跟踪信息:
我认为malloc(在下面最重的堆栈跟踪中)可能会成为NSDate的一部分,但我也认为它可能是在解析的某个中间步骤中仅使用的内存。有人知道它是哪一个或如何找出吗?
此外,是否有办法在NSDate dealloc上设置断点,以查看是否真的回收了该内存?
以下是用于解析这些日期的我的日期格式化程序的外观:
df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE, d MMM yyyy H:m:s z"];
以下是内存占用过高并停留时的最重要堆栈跟踪信息:
0 libSystem.B.dylib 208.80 Kb malloc
1 libicucore.A.dylib 868.19 Kb icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
2 libicucore.A.dylib 868.66 Kb icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
3 libicucore.A.dylib 868.67 Kb icu::ZoneMeta::getSingleCountry(icu::UnicodeString const&, icu::UnicodeString&)
4 libicucore.A.dylib 868.67 Kb icu::DateFormatSymbols::initZoneStringFormat()
5 libicucore.A.dylib 868.67 Kb icu::DateFormatSymbols::getZoneStringFormat() const
6 libicucore.A.dylib 868.67 Kb icu::SimpleDateFormat::subParse(icu::UnicodeString const&, int&, unsigned short, int, signed char, signed char, signed char*, icu::Calendar&) const
7 libicucore.A.dylib 868.67 Kb icu::SimpleDateFormat::parse(icu::UnicodeString const&, icu::Calendar&, icu::ParsePosition&) const
8 libicucore.A.dylib 868.67 Kb icu::DateFormat::parse(icu::UnicodeString const&, icu::ParsePosition&) const
9 libicucore.A.dylib 868.67 Kb udat_parse
10 CoreFoundation 868.67 Kb CFDateFormatterGetAbsoluteTimeFromString
11 CoreFoundation 868.67 Kb CFDateFormatterCreateDateFromString
12 Foundation 868.67 Kb -[NSDateFormatter getObjectValue:forString:range:error:]
13 Foundation 868.75 Kb -[NSDateFormatter getObjectValue:forString:errorDescription:]
14 Foundation 868.75 Kb -[NSDateFormatter dateFromString:]
谢谢!