[ https://issues.apache.org/jira/browse/CB-9652?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason Ginchereau updated CB-9652: --------------------------------- Labels: iOS (was: ) > Cordova File plugin memory leaking > ---------------------------------- > > Key: CB-9652 > URL: https://issues.apache.org/jira/browse/CB-9652 > Project: Apache Cordova > Issue Type: Bug > Components: Plugin File > Affects Versions: 3.5.0 > Reporter: Gregor > Labels: iOS > > We are creating apps using Ionicframework, then building them using cordova. > What we are doing in our app is taking photos using Cordova Camera, then > moving the files to specific directory. The user has an ability to upload all > photos taken to server. Here is how the user progresses through the app: > 1. Make Photo using Cordova Camera. > 2. Use Cordova File to move created file using step 1 to other location. > 3. Repeat process 1&2 several times (20 times approx). > 4. Start sync process > 5. $http requests start (synchronous, not asynchronous!) > 5.1. Read data from File as base64 string (using Cordova File plugin) > 5.2. Send data to server > 5.3. On success, use Cordova File to delete photo from device. > This was tested on: > - iPad mini (ios 8, uiwebview) > - iPad 4 (ios 8, uiwebview) > We've debugged the whole process through Xcode and checked how memory > management is doing. The results were catastrophic! > - After each File.moveTo call, the app memory grew for at least 5MB. > - After each File.readAsDataUrl call, the app memory grew for at least 5MB. > - After each File.removeFile call, the app memory grew for at least 5MB. > {quote} > 015-09-02 09:00:03.487 test_app[1409:279018] THREAD WARNING: ['File'] took > '84140.372803' ms. Plugin should use a background thread. > 2015-09-02 09:00:51.925 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.680908' ms. Plugin should use a background thread. > 2015-09-02 09:00:58.376 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.557861' ms. Plugin should use a background thread. > 2015-09-02 09:01:12.505 test_app[1409:279018] THREAD WARNING: ['File'] took > '12.233887' ms. Plugin should use a background thread. > 2015-09-02 09:01:26.748 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.616943' ms. Plugin should use a background thread. > 2015-09-02 09:01:33.780 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.599121' ms. Plugin should use a background thread. > 2015-09-02 09:01:54.696 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.628174' ms. Plugin should use a background thread. > 2015-09-02 09:02:01.838 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.617920' ms. Plugin should use a background thread. > 2015-09-02 09:02:08.800 test_app[1409:279018] THREAD WARNING: ['File'] took > '13.183105' ms. Plugin should use a background thread. > 2015-09-02 09:02:15.660 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.779053' ms. Plugin should use a background thread. > 2015-09-02 09:02:29.399 test_app[1409:279018] THREAD WARNING: ['File'] took > '10.287842' ms. Plugin should use a background thread. > 2015-09-02 09:02:43.206 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.649170' ms. Plugin should use a background thread. > 2015-09-02 09:02:50.500 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.527100' ms. Plugin should use a background thread. > 2015-09-02 09:02:57.189 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.545166' ms. Plugin should use a background thread. > 2015-09-02 09:03:03.999 test_app[1409:279018] THREAD WARNING: ['File'] took > '11.493164' ms. Plugin should use a background thread. > 2015-09-02 09:03:15.452 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:19.132 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:20.488 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:20.527 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:20.556 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:20.584 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:20.610 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:24.390 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:24.408 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.034 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.489 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.509 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.529 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.549 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.570 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.601 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.656 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.689 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.720 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.749 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.773 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:26.806 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:34.164 test_app[1409:279018] THREAD WARNING: ['File'] took > '14.667969' ms. Plugin should use a background thread. > 2015-09-02 09:03:35.344 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.653 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.674 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.696 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.718 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.743 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.769 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.807 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.844 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.886 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:35.954 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:41.163 test_app[1409:279018] THREAD WARNING: ['File'] took > '12.062012' ms. Plugin should use a background thread. > 2015-09-02 09:03:41.256 test_app[1409:279018] Received memory warning. > 2015-09-02 09:03:41.262 test_app[1409:279018] Received memory warning. > {quote} > The problem isn't when we have just a few files to move (aka 5), but having > approximately 50 files, it always leads to an app crash. On iPad mini, after > 10 or 15 images, on iPad4, after 30, 40 or 50 images. > We've also tried to update Objective C code at all functions which we were > using surrounding them with {code:java}@autoreleasepool{code} brackets. It > didn't helped. > We've also tried to upgrade Cordova, tried to use different File plugin > versions, but there wasn't any difference. You kinda start thinking,.. is it > actually any good using those unoptimized plugins? Has anyone actually tried > them constantly running without closing the app? Has anyone actually thought > the clients also use old devices? > There isn't any memory management to be done on the app side, since we're > coding in JS (using Angular). But the crashes... well... we're dissapointed > to found out it will take few years before we'll have enough memory and the > Cordova itself won't be such an resource hog. > Is there actually anything we can do to 'optimize' the calls? Sadly, there's > no File.clean() or File.recycle() function we could use to clean the cordova > plugin memory. > What are your suggestion? > Regards, > Gregor -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org