Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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
AndroidGameView+;小调_Android_Opengl Es_Mono_Xamarin_Monogame - Fatal编程技术网

AndroidGameView+;小调

AndroidGameView+;小调,android,opengl-es,mono,xamarin,monogame,Android,Opengl Es,Mono,Xamarin,Monogame,我有一个相当复杂的基于OpenGL的应用程序,它使用AndroidGameView来设置绘图上下文等。我注意到在过去的某个时候(并不总是这样),当在Nexus 7上每隔一两秒钟测试一次应用程序时,我开始在控制台中不断收到GC\u MINOR消息 我还注意到“Android OpenGL应用程序”(在Xamarin Studio中)的基本模板项目也遇到了类似的问题。从该模板创建一个全新的项目并在硬件上运行,当应用程序只是坐在那里运行时,控制台会显示以下消息: [Mono] GC_BRIDGE nu

我有一个相当复杂的基于OpenGL的应用程序,它使用
AndroidGameView
来设置绘图上下文等。我注意到在过去的某个时候(并不总是这样),当在Nexus 7上每隔一两秒钟测试一次应用程序时,我开始在控制台中不断收到
GC\u MINOR
消息

我还注意到“Android OpenGL应用程序”(在Xamarin Studio中)的基本模板项目也遇到了类似的问题。从该模板创建一个全新的项目并在硬件上运行,当应用程序只是坐在那里运行时,控制台会显示以下消息:

[Mono] GC_BRIDGE num-objects 8 num_hash_entries 8 sccs size 8 init 0.00ms df1 0.12ms sort 0.00ms dfs2 0.24ms setup-cb 0.03ms free-data 0.03ms user-cb 26.49ms clenanup 0.12ms links 0/0/0/0 dfs passes 16/8
[Mono] GC_MINOR: (Nursery full) pause 51.85ms, total 52.00ms, bridge 26.98ms promoted 848K major 1120K los 186K
[Mono] GC_MINOR: (Nursery full) pause 49.65ms, total 49.80ms, bridge 0.00ms promoted 544K major 1664K los 186K
[Mono] GC_MINOR: (Nursery full) pause 50.72ms, total 50.93ms, bridge 0.00ms promoted 544K major 2208K los 186K
[Mono] GC_MINOR: (Nursery full) pause 84.78ms, total 85.02ms, bridge 0.00ms promoted 560K major 2768K los 186K
[Mono] GC_MINOR: (Nursery full) pause 58.10ms, total 58.23ms, bridge 0.03ms promoted 560K major 3328K los 186K
[Mono] GC_MINOR: (Nursery full) pause 49.32ms, total 49.47ms, bridge 0.00ms promoted 544K major 3872K los 186K
[Mono] GC_BRIDGE waiting for bridge processing to finish
[Mono] GC_BRIDGE num-objects 1 num_hash_entries 1 sccs size 1 init 0.00ms df1 0.24ms sort 0.03ms dfs2 0.00ms setup-cb 0.00ms free-data 0.03ms user-cb 25.57ms clenanup 0.12ms links 0/0/0/0 dfs passes 18/9
[Mono] GC_MINOR: (Nursery full) pause 135.53ms, total 135.77ms, bridge 25.82ms promoted 560K major 4432K los 186K

我的问题是:为什么会发生这种情况?我确信它与底层的
AndroidGameView
有关,但它并不总是这样。在我的实际应用程序中,不断的GC’ing会对整体图形性能产生负面影响(当
GC_MINOR
暂停50-100ms时,似乎有点“打嗝”。

我认为Xamarin在5.1中解决了这个问题

看看-

以前,他们在每次更新/绘制调用时都在Java对象上分配一些.NET WApper。在我看来,分配速率约为每秒5-10kb。 这可能导致每分钟或大约每分钟发生GC