
Korean: 
게임을 위한 Google
Android 메모리 툴과
최적의 활용 방법, 빌 빌로듀
개발자들은 Android에서
메모리를 사용할 때 어려움을 겪죠
메모리가 충분하지 않다면
시스템이 게임에 피해를 주므로
메모리 용량을 결정하는 건 어렵죠
얼마나 많은 메모리를 사용할지
알 수 없으니까요
좋지 못한 메모리 포인터를
찾아내는 것도 어렵죠
Android가 메모리를 관리하는 법을
간단하게 살펴볼게요
Android는 백그라운드 앱을
캐시에 저장하기 위해 메모리를 사용하므로
대규모의 메모리를 비우는 것은
메모리를 허비하는 일이죠
게임도 메모리가 필요한데요
Android가 백그라운드 앱을
종료시킬 때까지 기다려야 할 수도 있죠
게임보다 더 많은 메모리를 차지하는
작업도 있음을 인지해야 해요
메모리가 부족할 때
대처 방법을 알려드릴게요
메모리는 보수적으로 접근해야 합니다
핵심과 시스템 절차는 메모리를 차지하므로

Spanish: 
Herramientas de memoria de Android
y buenas prácticas
Los desarrolladores pueden enfrentar retos
cuando usan memoria en Android.
El sistema puede necesitar matar tu juego
si no hay suficiente memoria.
Determinar un presupuesto de memoria
es difícil porque no hay garantías
de cuánta memoria puedes usar.
Y los punteros de memoria malos
pueden ser difíciles de encontrar.
Echemos un vistazo rápido
a cómo administra Android la memoria.
Android usa memoria para almacenar
en caché las apps en segundo plano,
por lo que mantener
grandes cantidades de memoria libre
solo es desperdiciar memoria.
Si tu juego necesita memoria,
es posible que debas esperar a que Android
elimine las apps en segundo plano.
Ten en cuenta que otros procesos
pueden tener una mayor prioridad
de memoria que tu juego.
Aquí hay algunos consejos
sobre cómo manejar
situaciones de poca memoria.
Intenta ser conservador con la memoria.
Los procesos del núcleo
y del sistema ocupan memoria,

Chinese: 
在Android上使用内存时，
开发人员可能会面临挑战。
如果没有足够的内存，
系统可能需要终止您的游戏。
确定内存预算很困难，
因为无法保证可以使用多少内存。
错误的内存指针可能很难找到。
让我们快速看一下Android如何管理内存。
Android使用内存来缓存后台应用程序，
因此保持大量可用内存
只是在浪费内存。
如果您的游戏需要内存，
则可能需要等待Android
去除后台应用程序。
请记住，其他进程的优先级内存
可能比您的游戏高。
以下是有关如何处理低内存情况的一些技巧。
尝试对内存保守一点。
内核和系统进程会占用内存，

English: 
[MUSIC PLAYING]
BILL BILODEAU: Developers
can face challenges
when using memory on Android.
The system may need
to kill your game
if there isn't enough memory.
Determining a memory
budget is hard
because there are no guarantees
how much memory you can use.
And bad memory pointers
can be hard to find.
Let's take a quick look at
how Android manages memory.
Android uses memory for
caching background apps,
so keeping large
amounts of memory free
is just wasting memory.
If your game needs
memory, you may
need to wait for Android
to kill background apps.
Keep in mind that other
processes may have a higher
priority memory than your game.
Here are some tips on how to
handle low-memory situations.
Try to be conservative
with memory.
The kernel and system
processes take up memory,

Japanese: 
[Androidのメモリツールと
ベストプラクティス]
[ビル･ビロドー]
Androidでのメモリ使用時に
デベロッパーは苦労することがあります
メモリが不十分だと
システムにゲームを
強制終了されかねません
使用できるメモリ量に
保証がないため
メモリ割り当ての決定は
難しいものです
欠陥メモリ ポインタも
特定しにくいものです
Androidのメモリ管理を
見てみましょう
Androidはバックグラウンド アプリの
キャッシュにメモリを使用するため
メモリ領域を大量に空けておくことは
メモリの無駄です
ゲームにメモリを要する場合
Androidのバックグラウンド アプリ
停止を待たされることもあります
ゲームより他の処理にメモリが
優先されることもあるので留意しましょう
低メモリの対処方法について
ヒントとしては
メモリを節約することです
カーネルとシステムの処理に
メモリを消費するので

Portuguese: 
Ferramentas de memória 
e melhores práticas Android
Desenvolvedores podem encarar desafios
ao usar memória no Android.
O sistema pode precisar
fechar o seu jogo
se não tiver memória o suficiente.
Determinar o orçamento
de memória é difícil
pois não há garantias de quanta
memória você poderá usar.
E indicadores de memória ruins
podem ser difíceis de achar.
Vejamos como o Android
gerencia memória.
O Android usa memória para armazenar
apps de segundo plano em cache,
então manter grandes quantidades
de memória livre é só desperdício.
Se o seu jogo precisa de memória
será preciso esperar o Android
fechar os apps em segundo plano.
Outros processos podem ter prioridade
em relação ao seu jogo no uso da memória.
Aqui estão algumas dicas para
lidar com situações de pouca memória.
Tente ser conservador com a memória.
Os processos do núcleo e do sistema
ocupam memória,

Portuguese: 
então você não pode
usar toda a memória física.
Aplicativos de usuário típicos podem usar
serviços em segundo plano
que ocupam memória, então você
não deve testar em um aparelho zerado.
O OnTrimMemory pode avisar
que sua memória está baixa,
o que significa que o Low Memory Killer,
ou LMK, pode começar a "matar" processos.
Se a memória ficar muito baixa
até seu jogo pode "morrer".
Caso o seu jogo seja fechado pelo LMK,
um relatório de erros será exibido.
Você pode capturar um relatório de erros
com o comando adb.bugreport.
Isso salva um log que você pode usar
para procurar por lowmemorykiller
e descobrir se ele fechou seu jogo.
O Android Studio agora
possui um Native Memory Profiler
para ajudá-lo a entender 
como o seu jogo usa a memória.
O rastreamento da alocação de memória
pode mostrar onde reduzi-la

Japanese: 
すべての物理メモリは
使用できません
一般的なユーザーアプリが
メモリ消費するバックグラウンド
サービスを開始する可能性があるため
クリーンなデバイスで
テストすべきではありません
OnTrimMemoryは
低メモリを警告できるので
Low Memory Killer（LMK）が
処理の強制終了を
開始する可能性があるため
メモリ量が減りすぎると
ゲームも強制終了される恐れがあります
LMKがゲームを強制終了したかは
バグレポートでわかります
バグレポートの取得には
adb.bugreportコマンドを使用します
これにより保存される記録を
文字列lowmemorykillerで検索し
LMKがゲームを強制終了したかを
把握できます
Android Studioには現在
ネイティブMemory Profilerがあり
ゲームのメモリ使用状況を把握できます
メモリ割り当てのスタックトレースが
メモリを低減すべき箇所を表示し
割り当て解除もわかるので

English: 
so you can't use all
the physical memory.
Typical user apps may
start background services
that take up memory,
so you shouldn't
test on a clean device.
OnTrimMemory can
warn you that memory
is running low, which means that
the Low Memory Killer, or LMK,
could start killing processes.
If the memory gets too low,
then even your game could get
killed.
A bug report will show if
your game was killed by LMK.
You can capture a bug report
by using adb.bugreport command.
This saves a log which you
can search for the string
lowmemorykiller to see if
your game was killed by LMK.
Android Studio now has
a Native Memory Profiler
to help you understand
how your game uses memory.
Stack traces of
memory allocations
can show where to reduce memory,
and seeing de-allocations

Korean: 
물리적 메모리를 모두 사용할 수 없죠
일반적인 사용자 앱은
백그라운드 서비스가 메모리를 차지하여
구동하기 때문에
공기계에서는
테스트를 하지 않은 것이 좋아요
OnTrimMemory는 메모리가 감소하면
경고 메시지를 띄우고
Low Memory Killer가 가동되어
여러 작업을 종료시키기 시작하죠
메모리가 너무 부족하면
게임도 종료될 수 있어요
버그 보고서는 게임이
LMK에 의해 종료되었는지 보여주죠
adb.bugreport 커맨드를 이용하여
버그 리포트를 캡처할 수 있어요
이는 로그를 저장하는데
LMK가 게임을 종료시켰는지 보기 위해
문자열 lowmemorykiller를
검색하는 로그이죠
Android Studio는 게임의
메모리 사용 방식을 파악하기 위한
Native Memory Profiler를
보유하고 있습니다
메모리 할당에 대한 스택 추적은
어느 곳의 메모리를 줄여야 하는지 보여주고

Spanish: 
así que no puedes utilizar
toda la memoria física.
Las apps de usuario típicas
pueden iniciar servicios en segundo plano
que ocupan memoria,
por lo que no debes realizar
pruebas en un dispositivo limpio.
OnTrimMemory puede advertirte
que la memoria se está agotando,
lo que significa
que Low Memory Killer, o LMK,
podría comenzar a matar procesos.
Si la memoria está muy baja,
también podría matar tu juego.
Un informe de error mostrará
si tu juego fue matado por LMK.
Puedes capturar un informe de error
usando el comando adb.bugreport.
Este guarda un registro
donde puedes buscar
la cadena lowmemorykiller
para ver si LMK mató tu juego.
Android Studio ahora tiene
un analizador de memoria nativa
para ayudarte a entender
cómo tu juego usa la memoria.
El rastreo de las asignaciones de memoria
puede mostrar dónde reducir la memoria,

Chinese: 
因此您无法使用所有的实质内存。
典型的用户应用程序可能会启动
占用内存的后台服务，
因此不应在干净的设备上进行测试。
OnTrimMemory 
可以提醒您内存不足，
这意味着Low Memory Killer或LMK
可能会开始影响进程。
如果内存太低，
那么甚至您的游戏也可能被停止。
一个错误报告将显示您的游戏是否被LMK停止。
您可以使用adb.bugreport命令
捕捉错误报告。
这样会保存一个日志，
您可以在其中搜索字符串
lowmemorykiller，
以查看您的游戏是否被LMK停止。
Android Studio
现在具有本机内存配置文件，
可帮助您了您的解游戏如何使用内存。
内存分配的堆栈跟踪信息
可以显示减少内存的位置，

Japanese: 
メモリリークの特定に役立ちます
mallocとfreeのシステムコールに
限定されていることに留意しましょう
そのためメモリ使用を
プロファイリングするために
少し変更が
必要な場合があります
mmapで
メモリのプールを割り当てた後
プールから副次割り当てする
ゲームもありますが
Android Studioの
Memory Profilerは
こうした割り当てを見逃します
プロファイリングには
カスタム割り当て関数でなく
malloc関数と
free関数を使用します
少し変更すると
これをUnrealとUnityで行えます
システムのmallocとfreeを
Unrealで使用するには
FMallocAnsiを使用するため
ここに表示されたように
ベース割り当てメソッドを
変更する必要があります
Unity向けには
コマンドライン引数で
systemallocatorフラグを含めるため
UnityPlayerActivityを
拡張または修正します
ネイティブ
Memory Profilerの実行は

Korean: 
할당되지 않은 부분을 보면
메모리 유출 지점을 확인할 수 있어요
malloc과 free 함수가 호출하는
시스템으로 제한되는 점을 기억하세요
따라서, 메모리 사용을 프로파일링 할 때
최소한의 변화만 주어야 합니다
일부 게임은 mmap로
메모리 풀을 할당하고서
이러한 풀로부터 하위 할당합니다
Android Studio
Memory Profiler는
이러한 할당을 놓치게 되죠
프로파일링을 하려면 
커스텀 방식으로 할당된 함수가 아닌
malloc과 free 함수를 사용해야 해요
Unreal과 Unity에서
최소한의 변경으로 수행이 가능하죠
Unreal로 시스템 malloc과
free 함수를 사용하려면
기본 할당 방법을 수정하여
보시는 것과 같이
FMallocAnsi를 사용하면 돼요
Unity의 경우, UnityPlayer
Activity를 확장하거나 수정하여
커맨드 라인 인자 내에
systemallocator를 포함하죠
Native Memory Profiler를
구동하는 건

English: 
can help you pinpoint
memory leaks.
Note that it's limited to
system malloc and free calls.
Therefore, you may have
to make minor changes
to profiling memory usage.
Some games allocate
a pool of memory
with mmap and then
suballocate from these pools.
The Android Studio
Memory Profiler
will miss these allocations.
To profile, use malloc and
free instead of the custom
allocated functions.
This can be done in Unreal and
Unity with some minor changes.
To make Unreal use the
system malloc and free,
you need to modify
the base allocator
method to use FMallocAnsi,
as shown here.
For Unity, you can extend or
modify UnityPlayerActivity
to include the systemallocator
flag in the command line
arguments.
Running the Native
Memory Profiler

Chinese: 
查看解除分配可以帮助您查明内存泄漏。
请注意，它仅限于系统malloc和免费调用。
因此，您可能必须对概要分析内存使用情况
进行较小的更改。
一些游戏使用mmap分配一个内存池，
然后从这些池中进行子分配。
Android Studio Memory Profiler
会忽略这些分配。
要进行概要分析，使用malloc和free
而不是自定义分配的函数。
这可以在Unreal和Unity中
进行一些小的更改。
如下所示，要创建Unreal，
请使用系统malloc和free，
您需要修改基本分配器方法
以使用FMallocAnsi。
对于Unity，您可以扩展或修改
UnityPlayerActivity
以在命令行参数中包含
systemallocator标志。
运行本机内存探查器

Spanish: 
y ver las desasignaciones puede ayudarte
a detectar pérdidas de memoria.
Nota que está limitado
a las llamadas malloc y free del sistema.
Por lo tanto, es posible
que debas realizar cambios menores
en la creación de perfiles
del uso de memoria.
Algunos juegos asignan
un grupo de memoria con mmap
y luego subasignan de estos grupos.
El Memory Profiler de Android Studio
perderá estas asignaciones.
Para perfilar, usa malloc y free
en lugar de las funciones
asignadas personalizadas.
Esto se puede hacer en Unreal
y Unity con algunos cambios menores.
Para hacer que Unreal
use el malloc y free del sistema,
debes modificar el método BaseAllocator
para usar FMallocAnsi,
como se muestra aquí.
Para Unity, puedes extender
o modificar UnityPlayerActivity
para incluir el indicador systemallocator
en los argumentos de la línea de comandos.
Ejecutar Native Memory Profiler
es similar a otras herramientas
de creación de perfiles en Android Studio.

Portuguese: 
e ver as desalocações pode ajudá-lo
a encontrar vazamentos de memória.
Note que isso se limita
a malloc de sistema e free calls.
Portanto, pode ser necessário
fazer pequenas mudanças
para identificar vazamentos de memória.
Alguns jogos alocam blocos de memória
com mmap e sub-alocam esses blocos.
O Android Studio Memory Profiler 
não vai achar essas alocações.
Para isso, use malloc e free ao invés
de funções de alocação personalizadas.
Isso pode ser feito em Unreal e Unity
com algumas pequenas alterações.
Para que Unreal use malloc e free,
é preciso mudar o método de alocação base
para o FMallocAnsi,
como mostrado aqui.
Para o Unity, você poderá extender
ou modificar UnityPlayerActivity
para incluir o aviso de systemallocator
nos argumentos da linha de comando.
A execução do Native Memory Profiler
é similar a outras ferramentas
do Android Studio.

Japanese: 
Android Studioの
他のプロファイリング ツールと同様です
Memory Profileの画面から
Memory Traceをクリックします
Memory Traceの画面から
Record native allocationsを
クリックします
記録を停止すると
結果が表示されます
このようなものが
表示されるはずです
この画面には
アロケーション関数というメソッドと
割り当てまたは割り当て解除された
メモリ量が表示されています
コールスタック画面には
コールスタックと
割り当てまたは割り当て解除が
表示されています
Tencentは heapprofdのネイティブ メモリ
プロファイリングツールを使用し
PUBG MOBILEで
メモリの問題を明らかにしました
heapprofdで使われている
メモリ プロファイリング技術は
Android Studioのネイティブ
Memory Profilerのものと同じです
表出していた問題は
32ビットから64ビットの
ゲームに移行した際の
予想外のメモリ増加でした
その増分が
どこから来たかを把握するため
合理的なパフォーマンスで

Spanish: 
Desde la vista Memory Profile,
haz clic en Memory Trace.
Desde la vista Memory Trace,
haz clic en Record native allocations.
Cuando detienes la registración,
puedes ver los resultados,
y verás algo como esto.
Esta vista muestra los métodos
llamados funciones de asignación,
junto con la cantidad
de memoria asignada y desasignada.
La vista callstack
muestra la pila de llamadas
y las asignaciones y desasignaciones.
Tencent usó nuestra herramienta
nativa heapprofd
de creación de perfiles de memoria
para encontrar problemas
de memoria en PUBG MOBILE;
heapprofd es de la misma tecnología
de creación de perfiles de memoria
que se utiliza en el Native
Memory Profiler de Android Studio.
El problema era que veían
un aumento inesperado de memoria
al pasar de una versión del juego
de 32 bits a una de 64 bits.
Para saber de dónde provenía el aumento,

Portuguese: 
Do Memory Profile, clique em Memory Trace.
Do Memory Trace,
clique em Record native allocations.
Quando você parar de gravar,
poderá ver os resultados
e verá algo como isso.
Isso mostra os métodos
chamados de função de alocação
junto com quanta memória 
foi alocada e desalocada.
A visão de pilhas de blocos mostra
as pilhas, as alocações e desalocações.
A Tencent usou a nossa ferramenta de perfil
de memória nativa, heapprofd,
para encontrar problemas de memória
em PUBG MOBILE.
heapprofd é a mesma tecnologia
de caracterização de perfil de memória
usada no Native Memory Profiler
do Android Studio.
O problema era que eles viam
um aumento inesperado
no uso de memória indo desde
a versão 32 bits até a 64 bits do jogo.
Para encontrar de onde esse aumento vinha,
foi preciso rastrear alocações

English: 
is similar to other profiling
tools in Android Studio.
>From the Memory Profile view,
click on the Memory Trace.
>From the Memory
Trace view, click
on "Record native allocations."
When you stop the recording,
you can see the results,
and you'll see
something like this.
This view shows the methods
that are called allocation
functions, along
with how much memory
was allocated and de-allocated.
The callstack view shows the
callstack and allocations
and de-allocations.
Tencent used our heapprofd
native memory profiling tool
to find memory problems
in PUBG MOBILE.
heapprofd is the same
memory profiling technology
that's used in Android Studio's
Native Memory Profiler.
The problem was that they were
seeing an unexpected memory
increase when
going from a 32-bit
to a 64-bit version of the game.
In order to find out where
the increase was coming from,

Chinese: 
类似于Android Studio中的其他分析工具。
从Memory Profile视图中，
单击Memory Trace。
从Memory Trace视图中，
单击“记录本机分配”。
停止录制时，您可以看到结果，
并且会看到类似的内容。
该视图显示了称为分配函数的方法，
以及分配和取消分配了多少内存。
该调用堆栈视图显示调用堆栈，
分配和取消分配。
腾讯使用了我们的heapprofd
本机内存分析工具
来查找PUBG MOBILE中的内存问题。
heapprofd与Android Studio
的本机内存探查器中使用的内存分析技术相同。
问题是从32位版本到64位版本的游戏时，
他们看到意外的内存增加。

Korean: 
Android Studio의 다른
프로파일링 툴과 비슷합니다
Memory Profile view에서
Memory Trace를 클릭하고
Memory Trace view에서는
Record native
allocations을 클릭하면 돼요
녹화를 멈추면 결과를 볼 수 있는데
결과는 다음과 같습니다
얼마나 많은 메모리가 할당되고
할당되지 않았는지와 더불어
할당 함수라는 방법을 보여줍니다
callstack views는
호출 스택, 할당 여부를
보여줍니다
Tencent는 PUBG MOBILE에서
메모리 문제를 알아내기 위해
Google의 heapprofd 네이티브
메모리 프로파일러를 사용했죠
heapprofd는
Android Studio의
Native Memory Profiler에
사용된 것과 같은
메모리 프로파일링 기술이죠
문제는 게임 버전이 32비트에서
64비트로 올라갈 때
예상치 못한 메모리 증가가
발생한다는 것이었죠
어디서 메모리가 증가하는지 알기 위해

Japanese: 
ネイティブ メモリ割り当てを
追跡する必要がありました
Tencentはそれを使用し
32ビットと64ビットとで
コンパイルされた構造体サイズを比較し
倍増したポインタサイズと
余剰パターンにより
構造体が10メガバイトずつ
増加することを突き止めました
メモリ問題には他に
欠陥メモリポインタがあります
これはクラッシュに繋がる恐れがあります
例えばセグメンテーション違反や
無効なデータへのアクセスや
一般に予想外のビヘイビアなどです
欠陥メモリポインタの要因には
解放メモリへのアクセスや
バッファのオーバーラン
未初期化または破損ポインタ
などがあります
Hardware-assisted
AddressSanitizer (HWASan)は
メモリのポインタの問題を検出する
新しいツールです
ASanに似ていますが 高速で
メモリのオーバーヘッドがより少ないものです

English: 
they needed to track
native memory allocations
with reasonable performance.
Tencent used it to compare the
size of structures compiled
for 32-bit versus 64-bit and
found that these structures
grew by 10 megabytes because
of the doubling of pointer
sizes and extra pattern.
Another type of memory problem
is with bad memory pointers.
This can lead to crashes,
like segmentation violations,
accessing invalid data, or in
general unexpected behavior.
Some of the causes of
bad memory pointers
include accessing freed
memory, buffer overruns,
or just uninitialized or
corrupted memory pointers.
Hardware Assisted Address
Sanitizer, or Hardware ASan,
is a new tool for detecting
memory pointer issues.
It's like ASan, but faster,
with much less memory overhead.

Korean: 
합리적인 성능을 바탕으로 하는
네이티브 메모리 할당을 추적해야 했죠
Tencent는 이를 이용해
32 비트와 64비트의
컴파일된 구조의 크기를 비교하였고
이러한 구조가 포인터 크기의 증폭과
추가 패턴으로 인하여 10메가 바이트까지
증가했음을 것을 알게 되었죠
또 다른 메모리 문제로는
나쁜 메모리 포인터가 있는데요
유효하지 않은 데이터에 접근하거나
예상하지 못한 반응으로 인한
유효하지 않은 데이터에 접근하는
분할 위반과 같은 충돌을 발생시키죠
나쁜 메모리 포인터의 원인은
사용되지 않는 메모리와
버퍼 오버런에 대한 접근이나
초기화되지 않거나 오류가 생긴
메모리 포인터가 있습니다
Hardware Assisted
Address Sanitizer나
Hardware ASan은 메모리 포인터
문제를 탐지하는 새로운 툴이죠
ASan과 비슷하지만 더 빠르고
메모리를 덜 소비해요

Spanish: 
necesitaban rastrear
las asignaciones de memoria nativa
con un rendimiento razonable.
Tencent lo usó para comparar
el tamaño de las estructuras compiladas
para 32 bits frente a las de 64 bits
y descubrió que estas estructuras
crecieron 10 megabytes
debido a la duplicación del tamaño
de los punteros y el patrón adicional.
Otro tipo de problema de memoria
es con punteros de memoria defectuosos.
Esto puede provocar bloqueos,
como violaciones de segmentación,
acceso a datos no válidos
o, en general,
un comportamiento inesperado.
Algunas causas
de malos punteros de memoria
son el acceso a la memoria liberada,
el desbordamiento del búfer
o simplemente punteros de memoria
no inicializados o dañados.
Hardware Assisted Address
Sanitizer, o Hardware ASan,
es una nueva herramienta para detectar
problemas de punteros de memoria.
Es como ASan, pero más rápida,
con mucha menos sobrecarga de memoria.

Chinese: 
为了找出增长的来源，
他们需要跟踪有着合理性能的本机内存分配。
腾讯用它比较了
为32位和64位编译的结构的大小，
发现由于指针大小加倍和额外的模式，
这些结构增长了10 MB。
内存问题的另一种类型是内存指针错误。
这可能会导致崩溃，例如分段违反，
访问无效数据或普遍不被预料到的行为。
内存指针错误的某些原因包括
访问已释放的内存，缓冲区溢出
或只是未初始化或损坏的内存指针。
硬件辅助地址清除器或硬件ASan
是用于检测内存指针问题的新工具。
就像ASan 一样，但是速度更快，
内存开销更少。

Portuguese: 
de memória nativa 
com uma boa performance.
A Tencent usou isso para comparar
o tamanho das estruturas compiladas
de versões 32 bits versus 64 bits
e descobriu que essas estruturas
cresciam em 10 megabytes devido
a duplicação do tamanho dos indicadores
e de padrões extras.
Outro tipo de problema de memória
é com indicadores de memória ruins.
Isso pode levar a travamentos
como violações de segmentação,
acesso a dados inválidos ou
comportamento inesperado em geral.
Algumas das causas de indicadores
de memória ruins
incluem acesso à memória livre,
transbordamento de dados,
ou indicadores de memória
não iniciados ou corrompidos.
O Hardware Assisted Address Sanitizer,
ou Hardware ASan,
é uma nova ferramenta para
detectar problemas nos indicadores.
É como o ASan, mas mais rápido e
com menos sobrecarga de memória.

Spanish: 
Cuando se habilite Hardware ASan,
hará que el juego se bloquee
si se utiliza un puntero no válido.
Utiliza una compilación de Hardware ASan
con Android 10 o posterior
en teléfonos Pixel.
Los juegos deben ser de 64 bits
y usar malloc y free
o asignadores personalizados
instrumentados.
Así es como funciona Hardware ASan:
Usa la característica Top Byte Ignore
y la arquitectura ARM 64 para almacenar
una etiqueta de memoria en el puntero.
También crea una memoria oculta
para hacer asignaciones
a una etiqueta única.
Si la etiqueta de puntero no coincide
con la etiqueta de memoria oculta,
sabrá que el puntero era malo.
Estos son los pasos
para usar Hardware ASan.
Primero, flashea un dispositivo Pixel
con una versión
de Hardware ASan de Android.
Puedes obtenerla en flash.android.com.

Chinese: 
启用“硬件ASan后，
如果使用了无效的指针，将导致游戏崩溃。
它在Pixel手机上
使用Android 10
或更高版本的Hardware ASan构建。
游戏必须是64位的，
并使用malloc和free
或插装的自定义分配器。
这是Hardware ASan的运作方式。
它使用 Top Byte Ignore功能
和ARM 64架构
将内存标签存储在指针中。
它还创建了一个影子存储器，
以将分配映射到一个独特的标签。
如果指针标签与影子内存标签不匹配，
则表明该指针已损坏。
以下是使用Hardware ASan的步骤。
首先，使用Android的ASan硬件版本
刷新Pixel设备。
您可以在flash.android.com上获得它。

Korean: 
Hardware ASan을 사용하면
유효하지 않은 포인터 사용 시
게임이 충돌을 일으킬 수 있죠
Android 10 이상이나
Pixel 휴대폰으로 제작된
Hardware ASan을 사용합니다
게임은 64 비트가 적당하며
malloc 및 free 함수를 사용하거나
계측된 커스텀 앨러케이터를 사용하죠
Hardware ASan가
구동되는 방식입니다
Top Byte Ignore 기능과
ARM 64 구조를 사용하여
포인터 안에 메모리 태그를 저장해요
독특한 태그로 할당을 표시하기 위해
섀도 메모리를 만들죠
포인터 태그가 섀도 메모리 태그와
일치하지 않는다면
좋은 포인터가 아닌 셈이죠
Hardware ASan의
사용 단계를 말씀드릴게요
첫 번째, Android의
Hardware ASan 버전을 이용해
Pixel 기기에 전송하세요
flash.android.com에서
이용할 수 있어요

Japanese: 
HWASanが有効になっていると
無効なポインタが使用された場合
ゲームのクラッシュ要因となります
Pixelスマートフォンの
Android 10以降で
HWASanビルドを使用しています
ゲームの要件は64ビットで
mallocとfreeか
カスタム アロケータを使用していることです
こちらがHWASanの仕組みです
Top Byte Ignore機能と
ARM 64アーキテクチャを使用して
ポインタ内にメモリタグを保存します
またシャドウメモリを作成して
割り当てを独自のタグへマッピングします
ポインタ タグが
シャドウメモリのタグと一致しない場合
欠陥ポインタであると判別します
こちらのステップで
HWASanを使用できます
まずPixelデバイスに
Android版HWASanを移行します
flash.android.comから
取得できます

English: 
When Hardware ASan
is enabled, it
will cause the game to crash
if an invalid pointer is used.
It uses a Hardware ASan
build with Android 10
or later on Pixel phones.
Games need to be 64-bit and use
malloc and free or instrumented
custom allocators.
Here is how Hardware ASan works.
It uses the Top Byte Ignore
feature and ARM 64 architecture
to store a memory
tag in the pointer.
It also creates a shadow
memory to map allocations
to a unique tag.
If the pointer tag doesn't
match the shadow memory tag,
then it knows the
pointer was bad.
Here are the steps
to use Hardware ASan.
First, flash a Pixel
device with a Hardware ASan
version of Android.
You can get this at
flash.android.com.

Portuguese: 
Quando o Hardware ASan está habilitado,
ele fará o jogo travar se houver
algum indicador inválido em uso.
Ele usa o Hardware ASan com Android 10
ou superior em telefones Google Pixel.
Jogos precisam ser 64 bits 
e usar malloc e free
ou alocadores personalizados
instrumentados.
Veja como o Hardware ASan funciona.
Ele usa o recurso Top Byte Ignore
e a arquitetura ARM 64
para guardar uma tag
de memória no indicador.
Isso cria uma vestígio de memória
para mapear alocadores em uma tag.
Se a tag do indicador não for igual
a tag do vestígio de memória,
esse indicador está ruim.
Aqui estão os passos para
usar o Hardware ASan.
Sobrescreva em um dispositivo Pixel
a versão Android do Hardware ASan.
Pode encontrar essa versão em: 
flash.android.com.

Japanese: 
aosp-master-with-phones-throttled
ビルドを探します
HWASan向けに
コンパイルされないので
Google Playサービスの利用を
無効化します
次のステップは
あなたのゲームで
HWASan版をビルドすることです
これを行うには
build.gradleと
cmake lists.txtファイルを修正します
最後に HWASanが
欠陥メモリポインタ使用を検出すると
ゲームはクラッシュします
logcat出力表示で
欠陥メモリアクセスの発生箇所や
Use-after-free バグの場合
元の割り当てや割り当て解除の
スタック トレースを把握できます
Android Studioでの
ネイティブMemory Profilerや
メモリのベストプラクティス
その他を知るには
d.android.com/gamesを
ご覧ください

English: 
Look for the aosp master
with phones throttled build.
You wanted to disable any use
of the Google Play Services,
since it isn't compiled
for Hardware ASan.
The next step is to build a
Hardware ASan-enabled version
of your game.
You can do this by modifying
the build.gradle and cmake
lists.txt files.
Finally, when
Hardware ASan detects
that a bad memory pointer is
used, the game will crash.
You can view the logcat output
to see where the bad memory
access occurred and
also a stack trace
of the original allocation
or de-allocation in the case
of use after free bugs.
You can learn about the Native
Memory Profiler on Android
Studio, memory best
practices, and more
at d.android.com/games.
[MUSIC PLAYING]

Korean: 
스로틀 방식으로 제작된 휴대폰으로
aosp 마스터를 찾아야 합니다
Google Play Services의
다른 기능은 비활성화하는 게 좋아요
Hardware ASan에 대해
컴파일되지 않으니까요
다음 단계는 게임의 하드웨어
ASan이 가능한 버전을
제작하는 건데요
build.gradle과 cmake
lists.txt files을 수정하여
작업을 수행할 수 있어요
마지막으로, Hardware ASan은
나쁜 메모리 포인터의 사용 여부와
게임의 충돌 가능성을 탐지합니다
나쁜 메모리 접근이 발생하는
지점을 알기 위해 로그캣 출력을 확인하고
초기 할당에 대한 스택 추적이나
버그가 제거된 사용 사례에서
할당되지 않은 사항의
스택 추적을 확인합니다
Android Studio의 Native
Memory Profiler와
메모리의 최적의 활용 방법 등을
d.android.com/games에서
확인하실 수 있습니다
게임의 수준을 높이세요

Chinese: 
寻找有手机节流构建的aosp主站。
您想要禁用对Google Play服务
的任何使用，
因为它不是为Hardware ASan编译的。
下一步是构建支持ASan硬件的游戏版本。
您可以通过修改build.gradle
和cmake list.txt文件来实现。
最后，当Hardware ASan检测到
使用了错误的内存指针时，游戏将崩溃。
您可以查看logcat输出，
以查看发生错误的内存访问的位置，
以及在释放错误后使用的情况下，
原始分配或取消分配的堆栈跟踪。
您可以在d.android.com/games上
了解有关Android Studio上的
Native Memory Profiler，
内存最佳做法等的信息。

Portuguese: 
Procure pela aosp master
with phones throttled build.
Desative todos os usos
do Google Play Services,
já que não são compilados
para o Hardware ASan.
O próximo passo é montar
uma versão do seu jogo habilitada
para o Hardware ASan.
É possível fazer isso modificando
o build.gradle e arquivos cmake lists.txt.
Quando o Hardware ASan detectar
um indicador de memória ruim, o jogo trava.
Você pode ver a saída do logcat
para achar onde o acesso ruim está
e rastrear a alocação original
ou desalocação no caso
de uso após erros livres.
Você pode aprender mais sobre
o Native Memory Profiler do Android Studio,
sobre as melhores práticas de memória
e mais em d.android.com/games.

Spanish: 
Busca la compilación
aosp-master-with-phones-throttled.
Deshabilita el uso
de Google Play Services,
ya que no está compilado
para Hardware ASan.
El siguiente paso es crear una versión
de Hardware ASan habilitado de tu juego.
Puedes hacer esto modificando los archivos
build.gradle y cmake lists.txt.
Finalmente, cuando Hardware ASan
detecte un puntero de memoria malo,
el juego se bloqueará.
Puedes ver el resultado de logcat
para ver dónde se produjo
el acceso incorrecto a la memoria
y también un rastreo
de la asignación original
o la desasignación en el caso de uso
después de liberar errores.
Puedes obtener información sobre Native
Memory Profiler en Android Studio,
buenas prácticas de memoria y más
en d.android.com/games.
Lleva tu juego al siguiente nivel.
Mira más Google for Games
