Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Android 改装-I/art:背景粘性并发标记扫描GC释放_Android_Web Services_Rest_Retrofit - Fatal编程技术网

Android 改装-I/art:背景粘性并发标记扫描GC释放

Android 改装-I/art:背景粘性并发标记扫描GC释放,android,web-services,rest,retrofit,Android,Web Services,Rest,Retrofit,我试图通过改造来提出一个简单的REST请求,但我得到了很多GC错误。我真的不知道怎么修。我试图在emulator上增加内存,但问题仍然存在。当进行同步调用时Response Response=usersCall.execute() 下列例外情况 java.lang.RuntimeException: An error occurred while executing doInBackground() android.os.AsyncTask$3.done(AsyncTask.j

我试图通过改造来提出一个简单的REST请求,但我得到了很多GC错误。我真的不知道怎么修。我试图在emulator上增加内存,但问题仍然存在。当进行同步调用时
Response Response=usersCall.execute()
下列例外情况

    java.lang.RuntimeException: An error occurred while executing doInBackground()
     android.os.AsyncTask$3.done(AsyncTask.java:309)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Cause by: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:831)
at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:422)
at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:410)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:25)
at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:116)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:211)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:174)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:89)
并使用pojo模型
Response-Response=usersCall.execute()同步调用然后

04-09 07:37:23.897 13396-13411/? I/art: Clamp target GC heap from 111MB to 96MB
04-09 07:37:23.897 13396-13411/? I/art: Background partial concurrent mark sweep GC freed 3104(48KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 7.520ms total 194.127ms
04-09 07:37:23.897 13396-13396/? I/art: WaitForGcToComplete blocked for 182.909ms for cause Alloc
04-09 07:37:23.929 13396-13411/? I/art: Background sticky concurrent mark sweep GC freed 128(5KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 8.237ms total 31.761ms
04-09 07:37:23.929 13396-13396/? I/art: WaitForGcToComplete blocked for 18.171ms for cause Alloc
04-09 07:37:24.130 13396-13411/? I/art: Clamp target GC heap from 111MB to 96MB
04-09 07:37:24.130 13396-13411/? I/art: Background partial concurrent mark sweep GC freed 5784(90KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 9.388ms total 200.412ms
04-09 07:37:24.130 13396-13396/? I/art: WaitForGcToComplete blocked for 200.758ms for cause Alloc
04-09 07:37:24.158 13396-13411/? I/art: Background sticky concurrent mark sweep GC freed 1710(34KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 6.897ms total 27.286ms
04-09 07:37:24.158 13396-13396/? I/art: WaitForGcToComplete blocked for 18.297ms for cause Alloc
04-09 07:37:24.346 13396-13396/? I/art: Clamp target GC heap from 111MB to 96MB
04-09 07:37:24.346 13396-13396/? I/art: Alloc partial concurrent mark sweep GC freed 2092(33KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 5.943ms total 188.191ms
04-09 07:37:24.370 13396-13396/? I/art: Alloc sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 8.501ms total 23.440ms
04-09 07:37:24.566 13396-13396/? I/art: Clamp target GC heap from 111MB to 96MB
04-09 07:37:24.566 13396-13396/? I/art: Alloc concurrent mark sweep GC freed 9(12KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 6.105ms total 195.296ms
04-09 07:37:24.566 13396-13411/? I/art: WaitForGcToComplete blocked for 395.241ms for cause Background
04-09 07:37:24.598 13396-13411/? I/art: Background sticky concurrent mark sweep GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 95MB/96MB, paused 6.138ms total 29.195ms
04-09 07:37:24.598 13396-13396/? I/art: WaitForGcToComplete blocked for 29.063ms for cause Alloc
04-09 07:37:24.775 13396-13396/? I/art: Clamp target GC heap from 111MB to 96MB
04-09 07:37:24.775 13396-13396/? I/art: Alloc partial concurrent mark sweep GC freed 16(56KB) AllocSpace objects, 1(54KB) LOS objects, 0% free, 95MB/96MB, paused 6.803ms total 177.429ms
我的代码:

Gson gson =
                new GsonBuilder()
                        .registerTypeAdapter(Usuario.class, new UsuarioDeserializer())
                        .registerTypeAdapter(Date.class, new CustomDateDeserializer())
                        .create();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(ConstantesUtil.URL_BASE)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

        UsuariosAPI usuarioApi = retrofit.create(UsuariosAPI.class);

        Usuario usuario = new Usuario(login, senha);

        Call<List<Usuario>> usuarios = usuarioApi.getUsuarios(usuario);

        usuarios.enqueue(new Callback<List<Usuario>>() {
            @Override
            public void onResponse(Call<List<Usuario>> call, Response<List<Usuario>> response) {
                List<Usuario> usuarios = response.body();

                for (Usuario u: usuarios) {
                    Log.i(TAG, u.getNome());
                }
            }

            @Override
            public void onFailure(Call<List<Usuario>> call, Throwable t) {

            }
        });
Gson-Gson=
新的GsonBuilder()
.registerTypeAdapter(Usuario.class,新的UsuarioDeserializer())
.registerTypeAdapter(Date.class,新的CustomDateDeserializer())
.create();
改装改装=新改装.Builder()
.baseUrl(ConstantesUtil.URL\u BASE)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
USUARISAPI USUARIAPI=改装.create(USUARISAPI.class);
Usuario-Usuario=新的Usuario(登录,senha);
调用usuarios=usuarioApi.getUsuarios(usuario);
usuarios.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
List usuarios=response.body();
对于(Usuario u:usuarios){
Log.i(TAG,u.getNome());
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
}
});
我意识到当模型(在您的例子中是“Usuario”)有一个导致序列化问题的成员变量时,就会出现这个问题(infinate GC循环)

public class Usuario {
    @SerializedName("id")
    public String id;

    // the following will cause infinite loop of GC
    public TextView problemView;

    // use transient keyword will solve the problem in GC infinite loop
    private transient TextView okView;
}

从pojo类中删除任何字节数组和Drawable,或使其成为瞬态。
享受

这些都不是错误<代码>I/
表示信息的严重性。这些消息是因为堆空间快用完了。无论您正在做什么来消耗堆空间,都是在您显示的LogCat行之前发生的。是的。你是对的。但是我需要知道为什么在我的应用程序中使用了改型,我得到了这样的警告。最有可能的是,改型与此无关。正如我所指出的,您的堆空间几乎用完了,无论您要做什么来消耗堆空间,都是在您显示的LogCat行之前发生的。如果我们有带改型调用的JsonObject,该怎么办?@DesmondLua@BhoomikaPatel我没有使用改型的JsonObject的经验。为什么不将Gson与改型调用一起使用呢?我已经将Gson与改型调用一起使用了,但仍然存在无限GC循环的问题。我怎样才能修复它?@BhoomikaPatel请用您的代码发布一个新问题。