简体   繁体   English

Android-为什么GC突然删除了我的对象?

[英]Android - why is GC suddenly removing my object?

When I'm creating object to write to output stream (size is lower than 150KB) it probably gets instantly destroyed, because of: 当我创建要写入输出流(小于150KB)的对象时,它可能会立即被破坏,原因是:

System.out.println("Sending object..");
Packet p = new Packet(mJpegData); // here exists
System.out.println(p); // reference exists
oos.writeObject(p); // null exception error

full error: 完全错误:

04-26 21:37:01.414: W/System.err(12888): java.lang.NullPointerException
04-26 21:37:01.414: W/System.err(12888):    at pl.aadamczyk.webcamera.Preview$PreCallback.onPreviewFrame(Preview.java:148)
04-26 21:37:01.417: W/System.err(12888):    at android.hardware.Camera$EventHandler.handleMessage(Camera.java:583)
04-26 21:37:01.417: W/System.err(12888):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-26 21:37:01.417: W/System.err(12888):    at android.os.Looper.loop(Looper.java:130)
04-26 21:37:01.417: W/System.err(12888):    at android.app.ActivityThread.main(ActivityThread.java:3687)
04-26 21:37:01.417: W/System.err(12888):    at java.lang.reflect.Method.invokeNative(Native Method)
04-26 21:37:01.417: W/System.err(12888):    at java.lang.reflect.Method.invoke(Method.java:507)
04-26 21:37:01.417: W/System.err(12888):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
04-26 21:37:01.417: W/System.err(12888):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-26 21:37:01.417: W/System.err(12888):    at dalvik.system.NativeStart.main(Native Method)
04-26 21:37:01.472: D/dalvikvm(12888): GC_FOR_MALLOC freed 1152K, 57% free 2820K/6535K, external 1596K/2108K, paused 17ms
04-26 21:37:01.472: I/System.out(12888): My Object has been GC'd. Packet@4063d908
04-26 21:37:01.523: D/dalvikvm(12888): GC_CONCURRENT freed 28K, 50% free 3311K/6535K, external 1596K/2108K, paused 3ms+10ms

"My Object has been GC'd. " is printed by Packet's finalizer. Packet的终结器将打印“我的对象已被GC处理”。

whole code: http://pastebin.com/zc5TcSgY 整个代码: http : //pastebin.com/zc5TcSgY

Why GS is removing my object? GS为什么要移走我的物体? I've got in about 120 MB free memory. 我有大约120 MB的可用内存。

How to fix it? 如何解决?

I think the problem is with oos because it might be the one causing NullPointerException . 我认为问题出在oos因为它可能是导致NullPointerException的问题

Change your code a little as below: 如下更改您的代码:

System.out.println("Sending object..");
Packet p = new Packet(mJpegData); // here exists
System.out.println(p); // reference exists 

if(oos != null)
    oos.writeObject(p);
else
    Log.w("oos", "its null");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM