SslIoRead memory leak in NSOutputStream (iPhone SDK)
Hi, I am using NSOutputStream to write email to smtp server. I used TLSv1 as security protocol. I found that everytime I open such a output stream and output as TLSv1, there is about 36k memory leak from a call "sslIoRead". Perfermance tool aslo link it to something like this in the code:
[outputStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey]
Anyone as the same experience, how can I fix it?
Thank you very much.
Added code in a more readable fashion:
CGImageRef blockRef = CGImageCreateWithImageInRect([img CGImage], CGRectMake(imgWidth - clipx, clipy,texsize,texsize));
CGContextRef spriteContext = CGBitmapContextCreate(spriteData, tex_size, tex_size, 8, tex_size * 4, CGImageGetColorSpace(blockRef), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextDrawImage(spriteContext, CGRectMake(0,0,(CGFloat)tex_size, (CGFloat)tex_size), blockRef);
glGenTextures(1, &texref);
glBindTexture(GLTEXTURE2D, texref);
glTexImage2D(GLTEXTURE2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GLUNSIGNEDBYTE, spriteData);
glTexParameterx(GLTEXTURE2D, GLTEXTURE_MINFILTER, GL_LINEAR);
glTexParameterx(GLTEXTURE2D, GLTEXTURE_MAGFILTER, GL_LINEAR);
CGImageRelease(blockRef);
CGContextRelease(spriteContext);
Similar Messages
-
Memory leak issue in iPhone app
We developed a little program to display PDF's on the iPhone, but it's crashing after scrolling through xx number of pages with low memory error. The app runs fine in the simulator but crashes on the original iphone. I ran the memory leak debugger tool from xcode and got the following:
http://picasaweb.google.com/momopi/MiscCollection#5384555524546579922
(click on magnify glass tool to zoom in)
Weird part is when I run the same on iphone simulator I only get 2 small memory leak warnings (128 bytes each), but on the iphone I get a lot more warnings and it crashes.
Has anyone seen anything like this?Perhaps you don't have any meaningful leaks. Your program could simply consume too much memory. It has been many years since keeping a small memory footprint was important. Now that Apple has thrown embedded programming to the masses, everyone has forgotten about that.
-
IPhone SDK 2.2 memory corruption
Hello. I'm working on an application for iPhone SDK 2.2 and seem to be having weird memory corruption problems. Not necessarily leaks because using Instruments shows my memory stamp never going above about 1.8 megs. The nature of the app is a database of animals so I'm constantly loading and unloading sounds and images. None of the objects are very large (at most I'll have 4 800k pngs loaded at once) and I've checked and rechecked my alloc/retain/release and everything is in order (hence no memory usage increase). However...after using the application for a while I'll notice strange behavior. For example:
1) we have a UILabel as the title for each page. After a while the font size of this will change.
2) I have several screens with a subclassed UIScrollView where images are loaded and then added to. The problem shows itself here by the images not showing up. there's no crash, stepping through the debugger shows that the image loads up fine, it's just that the image is not there.
3) I have a UILabel at the top of an animal description screen, which in the nib file is called "Animal Name" by default. This will change to show "Animal Name" at the top.
I've removed all audio in our latest build so that isn't the problem. What I'm starting to suspect is that altering anything defined in a nib file will cause corruption. For example, the UIScrollView is defined in the nib file, and I constantly am reassigning the contents of that with a UIImageView. This UIImageView is handled within the subview class like :
UIImageView *imgView = [[UIImageView alloc] initWithImage: [ UIImage imageWithContentsOfFile:[[NSBundle mainBundle ] pathForResource:imageToLoad ofType:@"png" ]] ];
imgView.tag = 50;
[self addSubview:imgView ];
[ imgView release ];
Then later when moving away from the screen I'll find that view's tag and remove it from the superview (since addSubView increases the retain count, the alloc+addSubView is cancelled by release+removeFromSuperView)
I can't explain why titles that are never changed would be affected, but it must somehow be related. What I'm wondering is: are there any known issues involving modification of the contents of objects defined in Nib files? Perhaps the memory allocated when initWithNibName is restrained, then any modification of objects allocated within it can cause corruption. I'm starting to think I should just alloc and free anything modified in code and skip using nib files altogether (I reset the text on buttons for example). If this is a known issue please let me know. I'll give you more information if I can.
Thank youJust download the huge SDK package and install. No need to uninstall the old SDK.
-
Memory Leak in BI SDK with XMLA Connector ?
Hi,
I am using BI SDK 3.5 with XMLA Connector. I noticed that in com.sap.ip.bi.sdk.dac.connector.xmla.impl.Connection class, the LocalTransaction object is rollbacked when the close() method is called.
This makes a call to the endTransaction() method of Repository class with "true" parameter and leads to informations storage into a RepositoryDBMemory instance.
The only way I found to avoid this is to call the endTransaction() method with "false" as parameter, which is what is done in commit() method of the LocalTransaction class.
So, I tried to commit the transaction before closing the connection but in XMLA mode, the getLocalTransaction() method throws an BIResourceException so it is impossible to commit it. This is the first issue.
Second issue: it seems that data hold by the DataSetContentHandler is not freed. I tried using SAP Parser, Xerces, Java Parser but it has no effect. I hava a MDX query that returns 13000 lines, the XML file size is about 15Mo.
In a for loop with 10 operations, it leads to a OutOfMemory error quickly (only 7 iterations OK with -Xmx256m -Xms256m options). On each iteration, the memory grows about 25 to 30Mo !
For the first point, I do not call the close method on the connection object and it is garbage collected (but, in my opinion, it is quite strange not calling the close() method on a connection object).
For the second one (DataSetContentHandler), I have no idea. Has someone already encounter this problem ? The Netbeans profiler tells me it is this object that holds all java.lang.String objects. Is it right ?
I saw in DataSetContentHandler class that it has two static fields: one for the row cursor of the dataset, the other one for column cursor. Why ? Is it OK in a multi-threaded context ?
<b>This is urgent as we will not put the project in production mode with such a memory leak ! We must find the problem very quickly.</b>
Thanks in advance for any help you might give to me !
Regards,
David Degardin (Ubik-Ingenierie)I found the same thing. Tracing the execution back I found the only place this function was called was as part of the setup, so you shouldn't have to worry about it getting called multiple times and leaking memory. The trouble seems to be when the AudioPlayer dealloc method is called, the memory is not cleaned up.
My fix was to modify the dealloc in AudioQueueObject to check to see if audioLevels is nil and, if not, free it. This seems to have fixed the problem. -
[iPhone] Memory leak when UIWebview is loaded with URL
I have created a custom browser in my app using UIWebview . A memory leak is seen on everytime webview is loaded with provided url. A snapshot of the leak is shown below.You may note that no back trace is shown and hence cause of leak is unknown.
Snapshot of leak
Please help me with this issue as early as possible.You might want to take this discussion to the developers forums. This is a general user to user forum for using the iPhone. This is way outside the scope of general use.
-
Hi,
1. I want to release previous memory before I redraw the screen. Is this the right way to do it using iPhone SDK?
[self.securityCodeView release];
self.securityCodeView = [[SecurityCodeView alloc] initWithFrame:Frame];
[self addSubview:securityCodeView];
[\b]
2. How do I refresh the screen without having to ALLOC memeory again? For example, I draw the screen ([self addSubview:securityCodeView]) and after one second, the screen needs to be redrawn (what statement to use?).
3. How do you retain some UIViews without redrawing since they don't need to be redrawn again (what statement to use)? For example, backgroundView needs not to be redrawn.
Thank you.I would suggest you read the docs on Memory Management on Obj-C. Basically anything you allocate explicitly will remain allocated (with a ref count of 1) until you explicitly do a release:
[myView release];
When you add a view to another view's subview, that view's ref count is incremented. So you can safely release the added view and yet use the references to the object throughout the code (as long as the parent view is not released/deallocated). -
IPhone SDK - Leaks in application
Hi All,
We are developing an application for iphone and our application has got two memory leaks. Do we have to clear all leaks before we submit our app to app store or there can be some leaks. Also the leaks that we are facing is related to NSMutablearray. Please direct us to some idea on how we can fix these leaks.
vijayThis is not a developer forum. It's a user to user forum.
You should have a properly working app before you submit it. -
SAPNWRFC SDK 7.11 Memory Leak
I am using the SAPNWRFC library (version 711, patch 86, changelist 1160156) for a .NET-based appliaction (using C#) on a Windows x86 platform.
My problem is that there seems to be memory leak in the SAPNWRFC library when acting as a RFC Client :
Whenver a connection handle becomes invalid due to an ABAP runtime failure or an ABAP message (in these cases the SAP backend system closes the connection ) i am automatically trying to re-establish the client connection using the RfcOpenConnection() methodl. I also use RfcCloseConnection() to make sure that all allocated memory resources are released before i open a new connection via RfcOpenConnection().
But nevertheless everytime the above scenario occurs the memory usage goes up.
Does somebody know how to handle this problem respectively how to release resources allocated to a client connection properly.I have the same problem. iTunes will eat up 80gb of space if I leave it running; eventually I have to force quit it, and slowly after that the hard drive space returns.
I wasn't sure if it was choking on the search tool, but I have a fairly large library also, so it would make sense.
Anyone got any good fixes for this? -
Memory Leaks Unresponsive Mouse
2009 8 core Mac Pro w/ 24 GB of RAM, ATI Radeon 4870, and a SeriTek PCIe eSATA card (card only has drives connected when running a manual drive clone). When running Toast 10 or Parallels 9, my RAM will fill up (I use a program called Menu Meters to monitor stuff). This machine worked just fine under OS 10.9 and earlier - no issues like this at all. ClamXAV will also completely fill the RAM up (the meter will be full green, instead of part green, then mostly grey when Toast or Parallels fills it up). I have to use Terminal to purge it so that the machine is usable.
The other thing that happens is that sometimes when the computer wakes up or I am in the middle of doing something, the mouse will still move, but the dock will not pop open and the left button the mouse doesn't respond. The right button will open the right click menu, but will not respond normally at all. I have tried a different Magic Mouse, but the problem is the same.
I thought that it may be a problem with the factory RAM and the Kingston RAM not playing nicely together. So I ran it with just the factory 8 GB and then ran it with the Kingston 16 GB - the problem persists no matter which RAM is installed. All of the RAM also passes the memory tests in Rember and TechTool.
So, I need to find out if someone thinks that maybe the bluetooth module may be going bad causing the mouse issues. I also need to find out what is causing the memory leaks. I followed the steps that someone gave on this site to boot into safe mode, repair permissions, reset PRAM, then reset SMC (or the other way around - I did it like they said to). It did nothing to fix the problem.
I need some guidance here. As I stated early on, the machine worked perfectly with OS 10.9. I have WAY too much software that I use, so doing a completely fresh install is out of the question - I don't have time to reload everything. This problem is annoying and I know that I am not the only one having these issues. Any input will be greatly appreciated. Thanks in advance.Here is the EtreCheck report:
Problem description:
Memory leaks when using Toast 10 or Parallels 9. Mouse also become unresponsive (it will move, but left button does not work and dock will not pop open - mouse problem happens independent of the RAM being filled up - different mouse was tried with same result).
EtreCheck version: 2.1.5 (108)
Report generated January 9, 2015 at 9:20:59 PM MST
Click the [Support] links for help with non-Apple products.
Click the [Details] links for more information about that line.
Click the [Adware] links for help removing adware.
Hardware Information: ℹ️
Mac Pro (Early 2009) (Verified)
Mac Pro - model: MacPro4,1
2 2.26 GHz Quad-Core Intel Xeon CPU: 8-core
24 GB RAM Upgradeable
DIMM 1
4 GB DDR3 ECC 1066 MHz ok
DIMM 2
4 GB DDR3 ECC 1066 MHz ok
DIMM 3
2 GB DDR3 ECC 1066 MHz ok
DIMM 4
2 GB DDR3 ECC 1066 MHz ok
DIMM 5
4 GB DDR3 ECC 1066 MHz ok
DIMM 6
4 GB DDR3 ECC 1066 MHz ok
DIMM 7
2 GB DDR3 ECC 1066 MHz ok
DIMM 8
2 GB DDR3 ECC 1066 MHz ok
Bluetooth: Old - Handoff/Airdrop2 not supported
Wireless: en2: 802.11 a/b/g/n
Video Information: ℹ️
ATI Radeon HD 4870 - VRAM: 512 MB
AL2216W 1680 x 1050 @ 60 Hz
System Software: ℹ️
OS X 10.10.1 (14B25) - Uptime: 2:4:35
Disk Information: ℹ️
HL-DT-ST BD-RE WH12LS39
HL-DT-ST DVDRAM GH24NS90
SAMSUNG HD103SJ disk1 : (1 TB)
EFI (disk1s1) <not mounted> : 210 MB
OS 10.10.1 (disk1s2) / : 999.35 GB (410.30 GB free)
Recovery HD (disk1s3) <not mounted> [Recovery]: 650 MB
SAMSUNG HD103SJ disk2 : (1 TB)
EFI (disk2s1) <not mounted> : 210 MB
Extra Storage (disk2s2) /Volumes/Extra Storage : 999.86 GB (554.20 GB free)
SAMSUNG HD103SJ disk3 : (1 TB)
EFI (disk3s1) <not mounted> : 210 MB
Extra Storage 2 - Scratch (disk3s2) /Volumes/Extra Storage 2 - Scratch : 999.86 GB (39.54 GB free)
WDC WD5001AALS-00LWTA0 disk0 : (500.11 GB)
EFI (disk0s1) <not mounted> : 210 MB
BOOTCAMP (disk0s2) /Volumes/BOOTCAMP : 499.90 GB (275.71 GB free)
USB Information: ℹ️
Shuttle Technology Inc. E-USB Bridge
Sony C6606
Apple, Inc. Keyboard Hub
Apple Inc. Apple Keyboard
Apple Inc. BRCM2046 Hub
Apple Inc. Bluetooth USB Host Controller
Firewire Information: ℹ️
Apple Computer, Inc. iSight 200mbit - 400mbit max
Gatekeeper: ℹ️
Anywhere
Kernel Extensions: ℹ️
/Applications/Hotspot Shield.app
[not loaded] com.anchorfree.tun (1.0) [Support]
/Applications/Parallels Desktop.app
[not loaded] com.parallels.kext.hidhook (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.hypervisor (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.netbridge (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.usbconnect (9.0 24251.1052177) [Support]
[not loaded] com.parallels.kext.vnic (9.0 24251.1052177) [Support]
/Applications/TechTool Deluxe.app
[not loaded] com.micromat.iokit.ttpatadriver (5.0.0) [Support]
[not loaded] com.micromat.iokit.ttpfwdriver (5.0.0) [Support]
/Applications/TechTool Protogo/Protogo Applications/TechTool Pro 7.app
[not loaded] com.micromat.driver.spdKernel (1 - SDK 10.8) [Support]
[not loaded] com.micromat.driver.spdKernel-10-8 (1 - SDK 10.8) [Support]
/Applications/Temperature Monitor 4.94/Temperature Monitor 4.94.app
[not loaded] com.bresink.driver.BRESINKx86Monitoring (8.0) [Support]
/Applications/Toast 11 Titanium/Spin Doctor.app
[not loaded] com.hzsystems.terminus.driver (4) [Support]
/Applications/Toast 7 Titanium/Toast Titanium.app
[not loaded] com.roxio.TDIXController (1.6) [Support]
/Library/Extensions
[loaded] at.obdev.nke.LittleSnitch (4216 - SDK 10.8) [Support]
/System/Library/Extensions
[loaded] com.SiliconImage.driver.Si3132 (1.2.5) [Support]
[not loaded] com.devguru.driver.SamsungComposite (1.2.63 - SDK 10.6) [Support]
[not loaded] com.microsoft.driver.MicrosoftMouse (8.2) [Support]
[not loaded] com.roxio.BluRaySupport (1.1.6) [Support]
/System/Library/Extensions/MicrosoftMouse.kext/Contents/PlugIns
[not loaded] com.microsoft.driver.MicrosoftMouseBluetooth (8.2) [Support]
[not loaded] com.microsoft.driver.MicrosoftMouseUSB (8.2) [Support]
/System/Library/Extensions/ssuddrv.kext/Contents/PlugIns
[not loaded] com.devguru.driver.SamsungACMControl (1.2.63 - SDK 10.6) [Support]
[not loaded] com.devguru.driver.SamsungACMData (1.2.63 - SDK 10.6) [Support]
[not loaded] com.devguru.driver.SamsungMTP (1.2.63 - SDK 10.5) [Support]
[not loaded] com.devguru.driver.SamsungSerial (1.2.63 - SDK 10.6) [Support]
Startup Items: ℹ️
HP IO: Path: /Library/StartupItems/HP IO
SiCoreService: Path: /Library/StartupItems/SiCoreService
Startup items are obsolete in OS X Yosemite
Launch Agents: ℹ️
[running] at.obdev.LittleSnitchUIAgent.plist [Support]
[loaded] com.coupons.coupond.plist [Support]
[running] com.micromat.TechToolProAgent.plist [Support]
[loaded] com.oracle.java.Java-Updater.plist [Support]
[invalid?] com.parallels.mobile.prl_deskctl_agent.launchagent.plist [Support]
[invalid?] com.parallels.mobile.startgui.launchagent.plist [Support]
[not loaded] com.teamviewer.teamviewer.plist [Support]
[not loaded] com.teamviewer.teamviewer_desktop.plist [Support]
Launch Daemons: ℹ️
[running] at.obdev.littlesnitchd.plist [Support]
[loaded] com.adobe.fpsaud.plist [Support]
[loaded] com.bombich.ccc.plist [Support]
[loaded] com.hp.lightscribe.plist [Support]
[running] com.micromat.TechToolProDaemon.plist [Support]
[loaded] com.microsoft.office.licensing.helper.plist [Support]
[loaded] com.oracle.java.Helper-Tool.plist [Support]
[invalid?] com.parallels.mobile.dispatcher.launchdaemon.plist [Support]
[failed] com.parallels.mobile.kextloader.launchdaemon.plist [Support] [Details]
[not loaded] com.teamviewer.teamviewer_service.plist [Support]
User Launch Agents: ℹ️
[loaded] com.facebook.videochat.[redacted].plist [Support]
[loaded] com.google.keystone.agent.plist [Support]
[running] com.nchsoftware.expressinvoice.agent.plist [Support]
[loaded] uk.co.markallan.clamxav.clamscan.plist [Support]
[loaded] uk.co.markallan.clamxav.freshclam.plist [Support]
User Login Items: ℹ️
iTunesHelper Application (/Applications/iTunes.app/Contents/MacOS/iTunesHelper.app)
SMARTReporter Application (/Applications/SMARTReporter/SMARTReporter.app)
BetterSnapTool Application (/Applications/BetterSnapTool.app)
smcFanControl Application (/Applications/smcfancontrol_2_2_2/smcFanControl.app)
Android File Transfer Agent Application (/Users/[redacted]/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app)
Internet Plug-ins: ℹ️
JavaAppletPlugin: Version: Java 8 Update 25 Check version
FlashPlayer-10.6: Version: 16.0.0.235 - SDK 10.6 [Support]
Default Browser: Version: 600 - SDK 10.10
AdobePDFViewerNPAPI: Version: 11.0.06 - SDK 10.6 [Support]
CouponPrinter-FireFox_v2: Version: 5.0.3 - SDK 10.6 [Support]
AdobePDFViewer: Version: 11.0.06 - SDK 10.6 [Support]
Flash Player: Version: 16.0.0.235 - SDK 10.6 [Support]
QuickTime Plugin: Version: 7.7.3
SharePointBrowserPlugin: Version: 14.4.6 - SDK 10.6 [Support]
iPhotoPhotocast: Version: 7.0 - SDK 10.8
Safari Extensions: ℹ️
AdBlock [Installed]
F.B. Purity - Cleans Up Facebook [Installed]
OpenIE [Installed]
3rd Party Preference Panes: ℹ️
Déjà Vu [Support]
Flash Player [Support]
FUSE for OS X (OSXFUSE) [Support]
Java [Support]
MacFUSE [Support]
MenuMeters [Support]
Microsoft Mouse [Support]
MouseLocator [Support]
NTFS-3G [Support]
TechTool Protection [Support]
Time Machine: ℹ️
Time Machine not configured!
Top Processes by CPU: ℹ️
48% plugin-container
39% fontd
6% firefox
5% WindowServer
4% bluetoothaudiod
Top Processes by Memory: ℹ️
928 MB firefox
412 MB plugin-container
258 MB mds_stores
180 MB iTunes
129 MB Finder
Virtual Memory Information: ℹ️
19.38 GB Free RAM
3.11 GB Active RAM
1.88 GB Inactive RAM
1.38 GB Wired RAM
2.40 GB Page-ins
0 B Page-outs
Diagnostics Information: ℹ️
Jan 9, 2015, 07:16:57 PM Self test - passed
Jan 8, 2015, 11:37:48 AM /Library/Logs/DiagnosticReports/ClamXav_2015-01-08-113748_[redacted].cpu_resour ce.diag [Details]
Jan 8, 2015, 11:21:46 AM /Users/[redacted]/Library/Logs/DiagnosticReports/Preview_2015-01-08-112146_[red acted].crash -
Address Book Sync Memory Leak , Using 5.6GB of Real Memory
Has anyone had issues with this? I have to force quit the process from Activity Monitor every 30 minutes.
Sampling process 3337 for 3 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Analysis of sampling AddressBookSync (pid 3337) every 1 millisecond
Process: AddressBookSync [3337]
Path: /System/Library/Frameworks/AddressBook.framework/Versions/A/Resources/AddressBo okSync.app/Contents/MacOS/AddressBookSync
Load Address: 0x100000000
Identifier: AddressBookSync
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: SyncServer [3314]
Date/Time: 2011-05-30 10:09:28.670 -0400
OS Version: Mac OS X 10.6.7 (10J869)
Report Version: 7Unfortunately not. No groups and any Mobile Me account here not even many contacts (436) and any duplicates except in Ical after having restored my iphone 4 times. Something strange too, 2 weeks ago, Isync was running while I'm not registered on MM nor Icloud (turned off on my iphone) . Maybe a conflict between Outlook, Addressbook, Itunes and Isync on SL....I'm going crasy with this issue It reminds me of Windows ! Thx anyway, I'm gooing to contact apple in the following days.
-
How to fix huge iTunes memory leak in 64-bit Windows 7?
iTunes likes to allocate as much as 1.6GB of memory on my dual-quad XEON 8GB 64-Bit Windows computer and then becomes unresponsive.
This can happen several times a day and has been going on for as long as I can remember. No other software that I use does this - only Apple's iTunes. Each version I have installed of iTunes appears to have this same memory leak. Currently I am running version 10.7.0.21.
I love iTunes when it works. But having to constantly kill and relaunch the app throughout the day is bringing me down.
Searching for a fix for this on the internet just surfaces more and more complaints about this problem - but without a solution.
Having written shrinkwrapped software for end users as well as for large corporations and governments for more than 25 years I know a thing or two about software. A leak like this should take no more than a day or two to locate using modern software tools and double that to fix it. So why with each new version of iTunes does this problem persist? iTunes for Windows is the flagship software product Apple makes for non-Mac users - yet they continue to pass up each opportunity they have had over the years with each new release to fix this issue. Why is this?
Either the software engineers are not that good or they have been told NOT to spend time on this issue. I personally believe that the engineers at Apple are very good, and therefore am left thinking that the latter is more likely the case. Maybe this is to coax people to purchase a Mac so that they can finally run iTunes without these egregious memory leaks. I would like to offer another issue to consider.
Just as Amazon sold Kindles and Google sold Nexus tablets at low cost - not counting on margin for profit - but instead they wanted to saturate the marketplace with tools for making future purchases of content almost trivial to do with their devices. Apple also counts on this model with their pricer hardware - but they also have iTunes. Instead of trying to get people to switch to a MAC by continuing to avoid fixing this glaring issue in iTunes for Windows I would like to suggest that by allowing their engineers to address this issue that Apple will help keep Windows users from jumping ship to another music app. The profit to be made by keeping those Windows users happy and wedded to the iTunes store is obvious.
By continuing to keep this leak in iTunes for Windows all it does is lower my esteem for the company and start to make me wonder if the software is just as buggy on Macs.I have same issue. Ongoing for more than 1 year and currently running iTunes 11.3.
My PC is Dell OptiPlex 990 I7 processor, 8GB ram, W7 64 [always keep things patched up to latest OS updates etc]
I use this iTunes install to stream music videos etc to multiple appleTVs, ipads, iphones etc .. via Home Sharing
Store all my media including music, videos and apps on separate NAS .. so the iTunes running on PC is only doing the traffic cop role and streaming / using files stored on NAS .. creates lots of IO across my network
Previous troubleshooting suggest possible contributing causes include
a) podcast updates .. until recently I had this auto updates on multiple podcast subscriptions, presumably the iTunes would flow this from the PC to save on the NAS across the network .. if the memory leak is in the iTunes network communication layer (?bonjour?) this may be sensitive to IO that would not normally occur if the iTunes file saving was local on the same PC
b) app updates .. have 200+ apps in my library and there is always a batch of updates .. some updates 100s of MB is size .. routinely see 500MB to 1GB of updates in single update run .. all my apps are
c) streaming music / movies .. seems when we ramp up streamlining of music or movies . memory leak grows faster .. ie within hours of clean start
c) large syncs of music or videos to ipads or iphones .. noticed that get big problems when I rebuild an ipad .. I typically have 60+ GB of data in terms of apps / music / videos to load .. have to do rebuild in phases due to periodic lockups -
Memory leak in AudioServicesCreateSystemSoundID with sound files
hi !
Instruments indicates a 64Ko memory leak in "AudioServicesCreateSystemSoundID" when I use a sound that I have created with GBand / iTunes. When I use the sound file "tap.aif" from the "sysSound" sample, there is no memory leak.
What's wrong with my audio file ?
It's a AIFF file, 95Ko, 8 bit mono 22Khz @ 176kbps.
thanks...appFile = [ [ NSBundle mainBundle ] pathForResource : _filename ofType : _extension ];
FileUrl = [ NSURL fileURLWithPath: appFile ];
if ( AudioServicesCreateSystemSoundID( ( CFURLRef ) FileUrl, &soundID ) != kAudioServicesNoError )
return false;
I don't think the code is wrong because when I change the name of the sound in '_filename', there is no leak.
I haven't found in the documentation the audio file properties ( 8/16 bits, ... ) supported by 'AudioServicesCreateSystemSoundID'.
The code is for iPhone. -
Custom MediaStreamSource and Memory Leaks During SampleRequested
Greetings,
I have a nasty memory leak problem that is causing me to pull my hair out.
I'm implementing a custom MediaStreamSource along with MediaTranscoder to generate video to disk. The frame generation operation occurs in the SampleRequested handler (as in the MediaStreamSource example). No matter what I do - and I've tried a
ton of options - inevitably the app runs out of memory after a couple hundred frames of HD video. Investigating, I see that indeed GC.GetTotalMemory reports an increasing, and never decreasing, amount of allocated RAM.
The frame generator in my actual app is using RenderTargetBitmap to get screen captures, and is handing the buffer to MediaStreamSample.CreateFromBuffer(). However, as you can see in the example below, the issue occurs even with a dumb allocation
of RAM and no other actual logic. Here's the code:
void _mss_SampleRequested(Windows.Media.Core.MediaStreamSource sender, MediaStreamSourceSampleRequestedEventArgs args)
if ( args.Request.StreamDescriptor is VideoStreamDescriptor )
if (_FrameCount >= 3000) return;
var videoDeferral = args.Request.GetDeferral();
var descriptor = (VideoStreamDescriptor)args.Request.StreamDescriptor;
uint frameWidth = descriptor.EncodingProperties.Width;
uint frameHeight = descriptor.EncodingProperties.Height;
uint size = frameWidth * frameHeight * 4;
byte[] buffer = null;
try
buffer = new byte[size];
// do something to create the frame
catch
App.LogAction("Ran out of memory", this);
return;
args.Request.Sample = MediaStreamSample.CreateFromBuffer(buffer.AsBuffer(), TimeFromFrame(_FrameCount++, _frameSource.Framerate));
args.Request.Sample.Duration = TimeFromFrame(1, _frameSource.Framerate);
buffer = null; // attempt to release the memory
videoDeferral.Complete();
App.LogAction("Completed Video frame " + (_FrameCount-1).ToString() + "\n" +
"Allocated memory: " + GC.GetTotalMemory(true), this);
return;
It usually fails around frame 357, with GC.GetTotalMemory() reporting 750MB allocated.
I've tried tons of work-arounds, none of which made a difference. I tried putting the code that allocates the bytes in a separate thread - no dice. I tried Task.Delay to give the GC a chance to work, on the assumption that it just had no time
to do its job. No luck.
As another experiment, I wanted to see if the problem went away if I allocated memory each frame, but never assigned it to the MediaStreamSample, instead giving the sample (constant) dummy data. Indeed, in that scenario, memory consumption stayed
constant. However, while I never get an out-of-memory exception, RequestSample just stops getting called around frame 1600 and as a result the transcode operation never actually returns to completion.
I also tried taking a cue from the SDK sample which uses C++ entirely to generate the frame. So I passed the buffer as a Platform::Array<BYTE> to a static Runtime extension class function I wrote in C++.
I won't bore you with the C++ code, but even directly copying the bytes of the array to the media sample using memcpy still had the same result! It seems that there is no way to communicate the contents of the byte[] array to the media sample without
it never being released.
I know what some will say: the difference between my code and the SDK sample, of course, is that the SDK sample generates the frame _entirely_ in C++, thus taking care of its own memory allocation and deallocation. Because I want to get
the data from RenderTargetBitmap, this isn't an option for me. (As a side note, if anyone knows if there's a way to get the contents of an RT Window using DirectX, that might work too, but I know this is not a C++ forum, so...). But more importantly,
MediaStreamSource and MediaStreamSample are managed classes that appear to allow you to generate custom frames using C# or other managed code. The MediaStreamSample.CreateFromBuffer function appears to be tailored for exactly what I want. But there appears
to be no way to release the buffer when giving the bytes to the MediaStreamSample. At least none that I can find.
I know the RT version of these classes are new to Windows 8.1, but I did see other posts going back 3 years discussing a similar issue in Silverlight. That never appears to have been resolved.
I guess the question boils down to this: how do I safely get managed data, allocated during the SampleRequested handler, to the MediaStreamSample without causing a memory leak? Also, why would the SampleRequested handler just stop getting called
out of the blue, even when I artificially eliminate the memory leak problem?
Thanks so much for all input!Hi Rob -
Thanks for your quick reply and for clarifying the terminology.
In the Memory Usage test under Analyze/Performance and Diagnostics (is that what you mean?) it's clear that each frame of video being created is not released from memory except when memory consumption gets very high. GC will occasionally kick in, but eventually
it succumbs.
Interestingly, if I reduce the frame size substantially, say 320x240, it never runs out of RAM no matter how many frames I throw at it. The Memory Usage test, however, shows the same pattern. But this time the GC can keep up and release the RAM.
After playing with this ad nauseum, I am fairly convinced I know what the problem is, but the solution still escapes me. It appears that the Transcoder is requesting frames from the MediaStreamSource (and the MediaStreamSource is providing them via
my SampleRequested handler) faster than the Transcoder can write them to disk and release them. Why would this be happening? The MediaStreamSource.BufferTime property is - I thought - used to prevent this very problem. However, changing the BufferTime seems
to have no effect at all - even changing it to ZERO doesn't change anything. If I'm right, this would explain why the GC can't do its job - it can't release the buffers I'm giving to the Transcoder via SampleRequested because the Transcoder won't give them
up until it's finished transcoding and writing them to disk. And yet the transcoder keeps requesting samples until there's no more memory to create them with.
The following code, which I made from scratch to illustrate my scenario, should be air-tight according to everything I've read. And yet, it still runs out of memory when the frame size is too large.
If you or anyone else can spot the problem in this code, I'd be thrilled to hear it. Maybe I'm omitting a key step with regard to getting the deferral? Or maybe it's a bug in the back-end? Can I "slow down" the transcoder and force it to release samples
it's already used?
Anyway here's the new code, which other than App.cs is everything. So if I'm doing something wrong it will be in this module:
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Diagnostics;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Popups;
using Windows.Storage;
using Windows.Storage.Pickers;
using Windows.Storage.Streams;
using Windows.Media.MediaProperties;
using Windows.Media.Core;
using Windows.Media.Transcoding;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace MyTranscodeTest
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
MediaTranscoder _transcoder;
MediaStreamSource _mss;
VideoStreamDescriptor _videoSourceDescriptor;
const int c_width = 1920;
const int c_height = 1080;
const int c_frames = 10000;
const int c_frNumerator = 30000;
const int c_frDenominator = 1001;
uint _frameSizeBytes;
uint _frameDurationTicks;
uint _transcodePositionTicks = 0;
uint _frameCurrent = 0;
Random _random = new Random();
public MainPage()
this.InitializeComponent();
private async void GoButtonClicked(object sender, RoutedEventArgs e)
Windows.Storage.Pickers.FileSavePicker picker = new Windows.Storage.Pickers.FileSavePicker();
picker.FileTypeChoices.Add("MP4 File", new List<string>() { ".MP4" });
Windows.Storage.StorageFile file = await picker.PickSaveFileAsync();
if (file == null) return;
Stream outputStream = await file.OpenStreamForWriteAsync();
var transcodeTask = (await this.InitializeTranscoderAsync(outputStream)).TranscodeAsync();
transcodeTask.Progress = (asyncInfo, progressInfo) =>
Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
_ProgressReport.Text = "Sourcing frame " + _frameCurrent.ToString() + " of " + c_frames.ToString() +
" with " + GC.GetTotalMemory(false).ToString() + " bytes allocated.";
await transcodeTask;
MessageDialog dialog = new MessageDialog("Transcode completed.");
await dialog.ShowAsync();
async Task<PrepareTranscodeResult> InitializeTranscoderAsync (Stream output)
_transcoder = new MediaTranscoder();
_transcoder.HardwareAccelerationEnabled = false;
_videoSourceDescriptor = new VideoStreamDescriptor(VideoEncodingProperties.CreateUncompressed( MediaEncodingSubtypes.Bgra8, c_width, c_height ));
_videoSourceDescriptor.EncodingProperties.PixelAspectRatio.Numerator = 1;
_videoSourceDescriptor.EncodingProperties.PixelAspectRatio.Denominator = 1;
_videoSourceDescriptor.EncodingProperties.FrameRate.Numerator = c_frNumerator;
_videoSourceDescriptor.EncodingProperties.FrameRate.Denominator = c_frDenominator;
_videoSourceDescriptor.EncodingProperties.Bitrate = (uint)((c_width * c_height * 4 * 8 * (ulong)c_frDenominator) / (ulong)c_frNumerator);
_frameDurationTicks = (uint)(10000000 * (ulong)c_frDenominator / (ulong)c_frNumerator);
_frameSizeBytes = c_width * c_height * 4;
_mss = new MediaStreamSource(_videoSourceDescriptor);
_mss.BufferTime = TimeSpan.FromTicks(_frameDurationTicks);
_mss.Duration = TimeSpan.FromTicks( _frameDurationTicks * c_frames );
_mss.Starting += _mss_Starting;
_mss.Paused += _mss_Paused;
_mss.SampleRequested += _mss_SampleRequested;
MediaEncodingProfile outputProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Ntsc);
outputProfile.Audio = null;
return await _transcoder.PrepareMediaStreamSourceTranscodeAsync(_mss, output.AsRandomAccessStream(), outputProfile);
void _mss_Paused(MediaStreamSource sender, object args)
throw new NotImplementedException();
void _mss_Starting(MediaStreamSource sender, MediaStreamSourceStartingEventArgs args)
args.Request.SetActualStartPosition(new TimeSpan(0));
/// <summary>
/// This is derived from the sample in "Windows 8.1 Apps with Xaml and C# Unleashed"
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
void _mss_SampleRequested(MediaStreamSource sender, MediaStreamSourceSampleRequestedEventArgs args)
if (_frameCurrent == c_frames) return;
var deferral = args.Request.GetDeferral();
byte[] frameBuffer;
try
frameBuffer = new byte[_frameSizeBytes];
this._random.NextBytes(frameBuffer);
catch
throw new Exception("Sample source ran out of RAM");
args.Request.Sample = MediaStreamSample.CreateFromBuffer(frameBuffer.AsBuffer(), TimeSpan.FromTicks(_transcodePositionTicks));
args.Request.Sample.Duration = TimeSpan.FromTicks(_frameDurationTicks);
args.Request.Sample.KeyFrame = true;
_transcodePositionTicks += _frameDurationTicks;
_frameCurrent++;
deferral.Complete();
Again, I can't see any reason why this shouldn't work. You'll note it mirrors pretty closely the sample in the Windows 8.1 Apps With Xaml Unleashed book (Chapter 14). The difference is I'm feeding the samples to a transcoder rather than a MediaElement (which,
again should be no issue).
Thanks again for any suggestions!
Peter -
Are you guys going to fix the memory leak in version 6
Hi I was wondering if you guys were going to fix the huge memory leak in Firefox 6. As of now I use windows Vista 32bit Ultimate and Firefox is using 164MB of memory to view www.google.com. I'm sorta confused also on how SLOW the browser is. I never seen F.F act this way since F.F 6. I'm hoping that this will be resolved in version 7 cuz this is not cool so slow in all.
On the "flip-side", I had the smoothest and quickest iTunes upgrade/install ever. This was on my Windows 7 Professional, 64bit system.
That you performed an assumedly 'clean' reinstall of your OS, is not a good sign. Obviously, iTunes doesn't like something within your system.
Here are the next steps that I would take if in your position:
- Are you absolutely positive that you have the 64bit version of iTunes?
- Re-download a new copy of the 64bit version of iTunes 10.5
- Try downloading iTunes from one of the 'mirror sites' - FileHippo is good
- Call your PC's manufacturer and see if they are aware of any conflicts with your specific machine's build with respect to iTunes
- Temporarily use another PC (if available) to get your iPhones up and running
Best of Luck -
We are implementing an AIR application that loads thumbnails
from the hard drive and uploads them to a remote server.
When bringing in large images, for example, when importing
five 2MB files into Image objects:
Flex reports that it is using 55MB
Windows reports using 220 Meg (viewing memory usage of
adl.exe in task manager)
After deletion of these image objects, the memory stays
allocated!! It is released when the application is closed.
Two issues I see:
1. Huge memory usage for image objects (I understand that JPG
files are exploded into BMPs). It limits our ability to load 10's
or 100's of images.
2. Bad Memory leak
OTHER THINGS WE TRIED:
1. Displaying images as inline html IMG tags.. Same memory
usage!
2. Taking a snapshot of the image and displaying that.
Problem, used way to much CPU
I hope these issues will be fixed before release time or we
are hosed.
PLATFORM: Windows XP Professional, service pack 2Hi
Have you tried the FB3 profiler to investigate why memory is
not getting deallocated?
You can use the loitering objects panel to track the back
references for the objects in memory. If you find that image object
is not being referenced by anything else. Can you file a bug at
http://bugs.adobe.com/flex
with a small test case.
Also as you know that jpg will be translated into bitmap. The
amount of memory required will be determined by the pixels in the
image. Each pixel will be 4K
Thanks,
Gaurav Jain
Flex SDK Team
Maybe you are looking for
-
RFC_FAILURE affects Connection Pool
Using VB.NET (2003) with .Net Connector 2.0. An intermittent problem causes a RFC Call to fail, and an exception is raised in the .NET code. The Exception message is: See RFC trace file or SAP system log for more details The Trace file shows: ER
-
Issue in material master update from presentation server using BAPI....
Hi Guru's... i am trying to change the material master from presentation server (desktop flat file) using BAPI(BAPI_MATERIAL_SAVEDATA) .... while executing my program i am getting the message like material had changed... but while in mm02 i am un abl
-
Problem with getting iPod to work.
I'm having a problem with getting an iPod to connect to my computers. Also I can't even really get it to run. My brother gave it to me one or two years ago and it had these problems I just didn't think of the idea of going directly to Apple to figure
-
Adding a Raspberry Pi to our network
Let me just begin by saying the while the company I work for is, thankfully, really starting to invest in their IT infrastructure we still have quite a bit of "ghettofied" systems in place. One such system was how we played our hold music over our ph
-
Hi my name is Napoleon and I just know what will happen to my iPhone 4S ,I went for a holiday in the Philippines las 2 weeks ago and some stole my iPhone 4S, how can I block the phone so that no one can use it?