Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内存不足Socket.IO呈现Android应用程序_Java_Android_Node.js_Socket.io - Fatal编程技术网

Java 内存不足Socket.IO呈现Android应用程序

Java 内存不足Socket.IO呈现Android应用程序,java,android,node.js,socket.io,Java,Android,Node.js,Socket.io,我在android上遇到以下错误: Out of memory: Heap Size=41159KB, Allocated=33002KB, Limit=49152KB 当我尝试调用构造函数的BitmapFactory.decodeResource方法时: public class Background { private Bitmap bitmap; public Background(Resources resources) { bitmap = BitmapFactory.d

我在android上遇到以下错误:

Out of memory: Heap Size=41159KB, Allocated=33002KB, Limit=49152KB
当我尝试调用构造函数的
BitmapFactory.decodeResource
方法时:

public class Background {

private Bitmap bitmap;

public Background(Resources resources) {
    bitmap = BitmapFactory.decodeResource(resources, R.drawable.ground);
}

public void render(Canvas canvas, int WIDTH, int HEIGHT) {

    for(int x = 0; x < WIDTH; x += bitmap.getWidth())
        for(int y = 0; y < HEIGHT; y += bitmap.getHeight())
            canvas.drawBitmap(bitmap, x, y, null);

}

}
我使用socket.io在服务器上创建了渲染循环,该循环向所有客户端套接字发出“render”事件。现在它甚至还没有达到应该渲染自己的程度

上面提到了两个问题,有没有办法解决??? 提前谢谢你

编辑

android:largeHeap=“true”只是在10秒后才将这个问题推到一边

编辑2

gc()使其持续时间更长,如15秒,直到出现以下故障:

14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm-heap: Out of memory on a 516182-byte allocation.
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm: Out of memory: Heap Size=130567KB, Allocated=116497KB, Limit=49152KB
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm: Extra info: Footprint=130567KB, Allowed Footprint=130567KB, Trimmed=0KB
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash: crash in the same process: EventThread
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash: java.lang.OutOfMemoryError: (Heap Size=130567KB, Allocated=116497KB)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.<init>(String.java:432)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.StringBuilder.toString(StringBuilder.java:663)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.Formatter.toString(Formatter.java:935)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.format(String.java:1998)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.format(String.java:1972)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.parser.Parser$Decoder.decodeString(Parser.java:231)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.parser.Parser$Decoder.add(Parser.java:148)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager.ondata(Manager.java:339)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager.access$1100(Manager.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager$2.call(Manager.java:312)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:482)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket.access$800(Socket.java:29)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:285)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Transport.onData(Transport.java:113)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.transports.WebSocket.access$100(WebSocket.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.transports.WebSocket$1$3.run(WebSocket.java:74)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.Thread.run(Thread.java:864)
14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm堆:516182字节分配的内存不足。
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm:内存不足:堆大小=130567KB,分配=116497KB,限制=49152KB
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm:Extra-info:Footprint=130567KB,Allowed Footprint=130567KB,Trimmed=0KB
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在同一进程中崩溃:EventThread
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:java.lang.OutOfMemoryError:(堆大小=130567KB,分配=116497KB)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.lang.String。(String.java:432)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.lang.StringBuilder.toString(StringBuilder.java:663)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.util.Formatter.toString(Formatter.java:935)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.lang.String.format(String.java:1998)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:位于java.lang.String.format(String.java:1972)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.socketio.parser.parser$Decoder.decodeString(parser.java:231)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.socketio.parser.parser$Decoder.add(parser.java:148)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.socketio.client.Manager.ondata(Manager.java:339)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.socketio.client.Manager.access$1100(Manager.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.socketio.client.Manager$2.call(Manager.java:312)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.emitter.emitter.emit(emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:482)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.engineio.client.Socket.access$800(Socket.java:29)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:285)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.emitter.emitter.emit(emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.engineio.client.Transport.onData(Transport.java:113)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:com.github.nkzawa.engineio.client.transports.WebSocket.access$100(WebSocket.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:com.github.nkzawa.engineio.client.transports.WebSocket$1$3.run(WebSocket.java:74)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_崩溃:在java.lang.Thread.run(Thread.java:864)
虽然我还没有渲染精灵

编辑3

在单独的线程中运行渲染循环没有帮助。所以我试着不画背景和前景,但也失败了。正如我前面所说的,当我试图在服务器上运行渲染循环时,问题似乎出现在Socket.io库中

编辑4


若我将服务器上的FPS更改为等于1,它不会失败

在它看来,这是一个巨大的循环语句,您正试图实现。你想要达到的目标是什么?首先,canvas.drawBitmap(位图,x,y,null);可能被调用的次数太多了。我试图在5000x5000世界中绘制500x500图像两次,但如果我每秒调用render 30次,则socket.io库似乎存在问题。嗯?这是在主线程上发生的还是在单独的线程中运行?Main:D我应该在单独的线程上运行它吗?这会解决问题吗???如果是的话,那么我应该非常感谢你…在一个单独的线程上运行可能会有所帮助,但问题似乎是你试图做太多来实现你的目标。特别是两张图片。你到底想画什么?
14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm-heap: Out of memory on a 516182-byte allocation.
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm: Out of memory: Heap Size=130567KB, Allocated=116497KB, Limit=49152KB
06-14 21:01:21.340 12844-18714/com.main.fishyio E/dalvikvm: Extra info: Footprint=130567KB, Allowed Footprint=130567KB, Trimmed=0KB
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash: crash in the same process: EventThread
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash: java.lang.OutOfMemoryError: (Heap Size=130567KB, Allocated=116497KB)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.<init>(String.java:432)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.AbstractStringBuilder.toString(AbstractStringBuilder.java:642)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.StringBuilder.toString(StringBuilder.java:663)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.Formatter.toString(Formatter.java:935)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.format(String.java:1998)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.String.format(String.java:1972)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.parser.Parser$Decoder.decodeString(Parser.java:231)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.parser.Parser$Decoder.add(Parser.java:148)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager.ondata(Manager.java:339)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager.access$1100(Manager.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.socketio.client.Manager$2.call(Manager.java:312)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:482)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket.access$800(Socket.java:29)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:285)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.Transport.onData(Transport.java:113)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.transports.WebSocket.access$100(WebSocket.java:19)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.engineio.client.transports.WebSocket$1$3.run(WebSocket.java:74)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-14 21:01:21.470 12844-18714/com.main.fishyio E/AndroidRuntime_3_crash:     at java.lang.Thread.run(Thread.java:864)