You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Robert Willett (JIRA)" <ji...@apache.org> on 2015/03/07 11:18:38 UTC

[jira] [Updated] (CB-8631) Memory leak in navigator.geolocation.getCurrentPosition

     [ https://issues.apache.org/jira/browse/CB-8631?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Willett updated CB-8631:
-------------------------------
    Environment: Mac - Mavericks 10.9.5, Version 6.1.1 (6A2008a), Cordova 4.1.2. Also same behaviour on Mac Yosemite 10.10.2 , iOS Simulator 8.1, 7.1 and iOS phone 8.1  (was: Mac - Mavericks 10.9.5, Version 6.1.1 (6A2008a), Cordova 4.1.2. Also same behaviour on Mac Yosemite 10.10.2 , iOS Simulator 8.1, 7.1 and iOS phone 8.1, cordova version reported as 4.1.2)

> Memory leak in navigator.geolocation.getCurrentPosition
> -------------------------------------------------------
>
>                 Key: CB-8631
>                 URL: https://issues.apache.org/jira/browse/CB-8631
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Geolocation
>    Affects Versions: 4.0.0
>         Environment: Mac - Mavericks 10.9.5, Version 6.1.1 (6A2008a), Cordova 4.1.2. Also same behaviour on Mac Yosemite 10.10.2 , iOS Simulator 8.1, 7.1 and iOS phone 8.1
>            Reporter: Robert Willett
>              Labels: geolocation, memory-leak
>
> Calling navigator.geolocation.getCurrentPosition appears to leak memory, 
> A simple test case with all steps:
> 1. cordova create geolocationtest com.example.geolocation GeoLocation 
> 2. cordova plugins add org.apache.cordova.console
> 3. cordova plugin add org.apache.cordova.geolocation
> 4. cordova platform add iOS
> 5. Replace the www/js/index.js with the below below. This is basically the starter code and only two functions have been added, onSuccess and onFailure along with a timer call to navigator.geolocation.getCurrentPosition()
> function onSuccess(position) {
>     console.log("Success...");
> }
> function onFailure(error) {
>     console.log("Failed...");
> }
> var app = {
>     // Application Constructor                                                                                                                                                                            
>     initialize: function() {
>         this.bindEvents();
>     },
>     bindEvents: function() {
>         document.addEventListener('deviceready', this.onDeviceReady, false);
>     },
>     onDeviceReady: function() {
>         app.receivedEvent('deviceready');
>         setInterval(function () {
>                 navigator.geolocation.getCurrentPosition(onSuccess , onFailure);
>             } , 1000);
>     },
>     receivedEvent: function(id) {
>         var parentElement = document.getElementById(id);
>         var listeningElement = parentElement.querySelector('.listening');
>         var receivedElement = parentElement.querySelector('.received');
>         listeningElement.setAttribute('style', 'display:none;');
>         receivedElement.setAttribute('style', 'display:block;');
>         console.log('Received Event: ' + id);
>     }
> };
> app.initialize();
> 6. cordova build ios
> 7. Run the code in Xcode. The memory footprint keeps climbing as memory from the getCurrentPosition call does not appear to be released. 
> 8. Commenting out the console.log entries stills shows the memory footprint climbing around 200K per call to navigator.geolocation.getCurrentPosition().
> The navigator.geolocation.getCurrentPosition call appears to work correctly. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org