processing-android icon indicating copy to clipboard operation
processing-android copied to clipboard

OutOfMemoryError reported by apps using processing-core

Open codeanticode opened this issue 7 years ago • 3 comments

The "ANRs & crashes" report from Google indicate that java.lang.OutOfMemoryError come from:

A ) 60% processing.core.PApplet.loadImage on this line: params[0].wichArray[params[0].pImageNum] = loadImage(params[0].file);

in this class

    ///////////////////////////////////////////////////////////////////////////////
    private class BitmapWorkerTask extends AsyncTask<MyTaskParams, Void, PImage> {
        // load image in background.
        @Override
        protected PImage doInBackground(MyTaskParams... params) {
 
            params[0].wichArray[params[0].pImageNum] = loadImage(params[0].file);

            return params[0].wichArray[params[0].pImageNum];
        }

        @Override
        protected void onPostExecute(PImage result) {
            ressourceCounter++;
        }
    }
    ///////////////////////////////////////////////////////////////////////////////

B ) +- 30 % The ones that point me to a "ProGuard deobfuscation" file:

processing.opengl.PGL.allocateDirectIntBuffer processing.opengl.Texture.loadPixels processing.core.PApplet.loadImage processing.core.PImage.loadPixels

codeanticode avatar Jun 23 '18 14:06 codeanticode

@rich-gg This may be related to #482. In fact, that issue is making me thing that, in general, loading pixels arrays is causing these out-of-memory errors. For instance, every time a PImage is drawn with the OpenGL renderers, its pixels array gets allocated to copy the image to GPU memory. If you are dealing with many high-res images, all these pixel array could exhaust the memory available to the app. In the case of the issue I'm making reference to, the app save the curren contexts of the screen into a pixels array that needs to be big enough to store the entire screen, which could have a very large resolution. Anyways, finally looking into this :-)

codeanticode avatar Aug 09 '18 12:08 codeanticode

Opened a separate issue on the use of pixels to initialize textures: #483

codeanticode avatar Aug 09 '18 18:08 codeanticode

Both #482 and #483 are now fixed, and will push a new release of the mode soon.

codeanticode avatar Aug 09 '18 23:08 codeanticode