Xamarin.Android AndroidEnvironment文件未应用于更改GC Bridge实施

时间:2015-07-09 06:50:28

标签: android xamarin mono xamarin.android

我添加了一个名为env.conf的文件,其中包含以下内容

MONO_GC_PARAMS=bridge-implementation=tarjan
MONO_GC_PARAMS=nursery-size=128m
MONO_GC_PARAMS=soft-heap-limit=512m

到我的Android项目并将其构建操作配置为AndroidEnvironment。不幸的是,应用程序的输出声明旧桥实现用于垃圾收集:

  

07-09 09:43:34.042 D / Mono(32084):GC_OLD_BRIDGE num-objects 228 num_hash_entries 2049 sccs size 1277 init 0.00ms df1 7.35ms sort 2.87ms dfs2 2.96ms setup-cb 0.40ms free-data 3.11ms链接2593/2593/1284/16 dfs通过4870/3870

     

07-09 09:43:34.042 D / Mono(32084):GC_MAJOR :( LOS溢出)暂停60.33ms,总计61.31ms,桥45.65ms主要6864K / 6608K洛杉矶510K / 12016K

我使用Xamarin 3.11.666.0和Xamarin.Android 5.1.4.16,这似乎是目前这些软件包的最新版本。

如何为应用程序应用新的桥接器实现?

2 个答案:

答案 0 :(得分:5)

将它们组合成一行:

MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=128m,soft-heap-limit=512m

由于某些原因,当您逐行声明时,不会应用任何参数。

答案 1 :(得分:2)

原因是您将这些值分配给相同变量,因此只有最后一个才有效。

您可以按以下方式逐行进行操作:

MONO_GC_PARAMS=bridge-implementation=tarjan
MONO_GC_PARAMS=$MONO_GC_PARAMS,nursery-size=128m
MONO_GC_PARAMS=$MONO_GC_PARAMS,soft-heap-limit=512m