Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BIG_BUG644
minigame-unity-webgl-transform
提交
f081aa19
M
minigame-unity-webgl-transform
项目概览
BIG_BUG644
/
minigame-unity-webgl-transform
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minigame-unity-webgl-transform
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f081aa19
编写于
12月 28, 2022
作者:
O
oceanxiao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add memoryprofiler
上级
bc9e34c6
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
7446 addition
and
7 deletion
+7446
-7
Design/OptimizationMemory.md
Design/OptimizationMemory.md
+4
-4
Design/UsingMemoryProfiler.md
Design/UsingMemoryProfiler.md
+34
-2
README.md
README.md
+1
-1
tools/lauxlib.c
tools/lauxlib.c
+1053
-0
tools/simpledlmalloc.c
tools/simpledlmalloc.c
+6354
-0
未找到文件。
Design/OptimizationMemory.md
浏览文件 @
f081aa19
...
...
@@ -53,7 +53,7 @@ Unity WebGL是以WebAssembly+WebGL技术为基础的应用,运行在浏览器
进程级别: Perfdog、Android Studio、 Mac Xcode Instrument
UnityHeap(CPU主内存): 性能面板、
MemoryProfiler
、JavaScript Heap
UnityHeap(CPU主内存): 性能面板、
ProfilingMemory
、JavaScript Heap
引擎与资源:UnityProfiler
...
...
@@ -111,10 +111,10 @@ Unity引擎视角:
-
白色为预留部分,可被使用
-
其他颜色,已被业务使用
### 3.3
MemoryProfiler
MemoryProfiler
可以分析UnityHeap底层分配器的分配细节,任何分配都会产生记录,因此我们可以通过该能力分析更详细具体的分配行为。
### 3.3
ProfilingMemory
ProfilingMemory
可以分析UnityHeap底层分配器的分配细节,任何分配都会产生记录,因此我们可以通过该能力分析更详细具体的分配行为。
关于该能力的使用请查阅
[
使用
MemoryProfiler
分析内存
](
UsingMemoryProfiler.md
)
关于该能力的使用请查阅
[
使用
ProfilingMemory
分析内存
](
UsingMemoryProfiler.md
)
### 3.4 Unity Profiler
当发现UnityHeap(尤其是Native)占用比较高时,可通过UnityProfiler进一步分析问题所在。关于该工具在微信小游戏的使用请查阅
[
使用 Unity Profiler 性能调优
](
UnityProfiler.md
)
,推荐使用Unity InstantGame版本增强的Profiler功能,下载地址请查阅
[
推荐引擎版本
](
UnityVersion.md
)
。
...
...
Design/UsingMemoryProfiler.md
浏览文件 @
f081aa19
# 使用
MemoryProfiler
内存分析
# 使用
ProfilingMemory
内存分析
## 概述
利用
MemoryProfiler
,我们可以分析UnityHeap(CPU主内存)的详细分配堆栈与统计数值
利用
ProfilingMemory
,我们可以分析UnityHeap(CPU主内存)的详细分配堆栈与统计数值
## 步骤
1.
导出选项时勾选"Profiling Funcs"与"Profiling Memory"
...
...
@@ -56,4 +56,36 @@ Unity 2021:
Other: select * from alloc_used where callback not like "%xxx%" or callback not like "%xxx%"
```
## 常见问题
### 1. 开启ProflingMemory后非常慢,特别是在有Lua逻辑的情况
-
首先,这是正常情况,因为每次分配内存都会获取堆栈信息导致运行慢
-
Lua会存在大量分配行为,会加重这个问题, 因此我们提供了专门的内存分配器忽略Lua内存,具体做法:
1.
将
[
simpledlmalloc.c
](
../tools/simpledlmalloc.c
)
添加到xLua虚拟机源码目录下参与编译,(和lauxlib.c同一目录)
2.
参考
[
lauxlib.c
](
../tools/lauxlib.c
)
,在lua源码目录下的同名文件中增加
`simple_dlmalloc`
,并修改
`LUALIB_API lua_State *luaL_newstate (void)`
为如下所示
```
C
#include "simpledlmalloc.c"
static void *simple_dlmalloc (void *ud, void *ptr, size_t osize, size_t nsize) {
(void)ud; (void)osize; /* not used */
if (nsize == 0) {
dlfree(ptr);
return NULL;
}
else
return dlrealloc(ptr, nsize);
}
// using other_alloc instead of default dlmalloc to avoid print trace of lua
LUALIB_API lua_State *luaL_newstate (void) {
// lua_State *L = lua_newstate(l_alloc, NULL);
lua_State *L = lua_newstate(simple_dlmalloc, NULL);
if (L) lua_atpanic(L, &panic);
return L;
}
```
### 2. ProfilingMemory在真机上更容易出现内存崩溃
-
ProfilingMemory功能需要额外的内存记录堆栈与相关统计,因此JS侧内存压力会更大
-
不建议在真机上使用该功能,只需要在微信开发者工具上进行分析即可,UnityHeap(CPU主内存)在不同端上的行为基本是一致的
README.md
浏览文件 @
f081aa19
...
...
@@ -62,7 +62,7 @@
-
[
使用 Android CPU Profiler 性能调优
](
Design/AndroidProfile.md
)
-
[
使用 Unity Profiler 性能调优
](
Design/UnityProfiler.md
)
-
[
优化Unity WebGL的内存
](
Design/OptimizationMemory.md
)
-
[
使用
MemoryProfiler
分析内存
](
Design/UsingMemoryProfiler.md
)
-
[
使用
ProfilingMemory
分析内存
](
Design/UsingMemoryProfiler.md
)
-
[
音频适配优化
](
Design/AudioOptimization.md
)
-
[
压缩纹理优化
](
Design/CompressedTexture.md
)
-
[
资源优化工具与建议
](
Design/AssetOptimization.md
)
...
...
tools/lauxlib.c
0 → 100644
浏览文件 @
f081aa19
此差异已折叠。
点击以展开。
tools/simpledlmalloc.c
0 → 100644
浏览文件 @
f081aa19
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录