IL2CPPのメモリの問題

今回の主な話題:

1)IL2CPPのメモリの問題

2)Logによるメモリリーク

3)ProfilerのBuilt_in Resourcesのメモリ

4)Huawei P30ビデオの再生が異常

5)UWAGOTに関する疑問


 

Mono

Q: Q&AシリーズにIL2CPPとMonoとの比較があって、IL2CPPのメモリ使用量は高すぎると下落することに気づきました。これに関して、Unity技術者に尋ねました:Unityには独自のGCメカニズムがあります。頻繫的にオペレーティングシステムからメモリを請求・解放することを避けるために、Reserved Monoの値は一定的な区間内に保持し、ある特定の条件を満たす限り、または特別な状況では、GCが初めてトリガーされます。

またPerfDogの技術者にも尋ねたところ:メモリプール管理ロジックはいっしょで、上層管理に属します。

 

IL2CPPとMonoとも、中間言語以外は、同じく高すぎると下落しません。

他の技術者にも尋ねましたが、IL2CPPのメモリ使用量は高すぎると下落すると答えました。今は非常に混乱していて、回答していただけませんか。

 

                            

A:いわゆるメモリが上昇するだけで下落しないことは、主に2つの指標とかかわっています。1つはProfilerのReserved Monoで、もう1つはデバイスメモリ(PSS)です。これを説明する信頼できる文書は実際にはないので、実際のデータで説明しましょう。

まず(Reserved Mono)について、

1、Script BackendがMonoの場合、古いバージョンのMono 2.xまたは新しいバージョンで.Net 3.5(Runtime Version)を選択すると、この値は上昇するだけで下落しません。たとえば、このUnusedデータ、すでに非常に高いですが、下落することはありません。

2、同じくScript BackendがMonoの場合、.Net 4.x(ランタイムバージョン)を選択すると、この値を下げることができます(ただし、どのバージョンから開始したかはわかりません)。たとえば、このデータで、ドロップされますが、ドロップ操作が頻繁に実行されないことがわかります。

3、また、Script BackendがIL2CPPの場合、この値も減らすことができます。たとえば、このデータは上記の状況とあまり変わらないようです。

デバイスメモリについては、Androidシステムのメモリ管理メカニズムに関連しています。UnityがReserved Monoを減らすことによって、自身のメモリ使用量が減少されました。それても、システムがこのメモリをすぐに解放しないから、ここでの動きは明らかにしがたくなります。


 

Memory

Q2時間以上実行し、UWA GOTで確認してから、最大のメモリリークがまさかDebug.LogWarningで発生しました。これは合理的でしょうか?

A:それは、Logがインデックス付けされていたかもしれません。例えば、グローバル変数によってインデックス付けされました。それに、Logがまだ増加しつつあっています。


 

Resource

Q:実機でデバッグする場合、ProfilerBuilt_in ResourcesArialフォントの使用のようなことが表示されます。この部分のコストに注意する必要がありますか?

A:通常は必要ありません。Arialフォントなどのように、そのほとんどは、Development Buildによって導入されています。


 

Video

QUnity 2018.3.7では、UnityVideoPlayerを使用してビデオを再生します。プロジェクトとAndroidプロジェクトは統合されており、Huawei P30ではビデオを再生できません。

ビデオフォーマットはMp4ファイルです

ビデオはHuawei P30で個別に再生できます

ビデオはUnityプロジェクトのStreamingAssetsに配置されます(統合の問題により、VideoClipを使用するとすべてのAndroidスマートフォンでも再生できなくなるため、このディレクトリに配置され、URL経由でVideoPlayerに渡されて再生されます)

誰か解決方法を教えてくれませんか。Huawei P30も持ち方だったら、テストしてくれませんか。または「実行中に再生できない」メッセージのヒントをくださいませんか。感謝します!

 

A1:私たちも同じ問題が発生しました。以上のように解決してみましたが、

解像度の低下、ビットレートの低下

Assetディレクトリに置き、内倉トランスコードを使用する

ファイル形式の変更(WebM)

Androidによって設定されたハードウェアでデコードする

いずれも解決しておらず、リモートデバッグで異常は見られません。その後、ネイティブのVideoPlayerをあきらめて、再生プラグインに切り替えました。その方法で類似の問題はなく、現時点では正常に見えます。Unity内蔵のデコードは一部の機種に適用しないと思いますが、他の回答を待ちます。

 

 

A2:H.264メインプロファイル4.1 / CABACなし/ 2000Kbps / 720p、私たちのプロジェクトはこのビデオフォーマットの配置を使用しています。基本的に問題はありませんが、iOSのクラッシュ率は約3%であり、完全に解決できません。AndroidでES3.0をサポートしていない(再生されていない)デバイスを除外した後、非常に安定しています。さらに、国内の主要メーカーでよく使用されているAV Proプラグイン、または日本人でよく使用されているCRI Videoプラグインを検討してください。


 

Atlas

Q:アトラスの名前はChapterですが、UWA GOTのAssetsのTexture列に, ChapterというNameが表示されません。これの理由は何でしょうか?

A:アトラス合併が有効にならない可能性があります。このオプションをチェックできます。


UWA公式サイト:https://jp.uwa4d.com

UWA公式ブログ:https://blog.jp.uwa4d.com

UWA公式Q&Aコミュニティ(中国語注意):https://answer.uwa4d.com