Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
bingbingbingbing
mono
提交
b5302747
M
mono
项目概览
bingbingbingbing
/
mono
与 Fork 源项目一致
从无法访问的项目Fork
通知
35
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mono
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
b5302747
编写于
10月 11, 2018
作者:
A
Alex Busnita
提交者:
GitHub
10月 11, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1049 from Unity-Technologies/scripting_memory_capture_crash_fixes_old_mono
Scripting memory capture fixes for old mono
上级
4293dbb8
1e1e88ba
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
7 addition
and
19 deletion
+7
-19
mono/metadata/mempool.c
mono/metadata/mempool.c
+1
-1
unity/unity_memory_info.c
unity/unity_memory_info.c
+6
-18
未找到文件。
mono/metadata/mempool.c
浏览文件 @
b5302747
...
...
@@ -474,7 +474,7 @@ void mono_mempool_foreach_chunk(MonoMemPool* pool, mono_mempool_chunk_proc callb
while
(
current
)
{
gpointer
start
=
(
guint8
*
)
current
+
sizeof
(
MonoMemPool
);
gpointer
end
=
(
guint8
*
)
star
t
+
current
->
size
;
gpointer
end
=
(
guint8
*
)
curren
t
+
current
->
size
;
callback
(
start
,
end
,
user_data
);
current
=
current
->
next
;
...
...
unity/unity_memory_info.c
浏览文件 @
b5302747
...
...
@@ -264,12 +264,10 @@ static void AllocateMemoryForImageMemPool(MonoAssembly *assembly, void *user_dat
{
MonoImage
*
image
=
assembly
->
image
;
mono_image_lock
(
image
);
mono_mempool_foreach_chunk
(
image
->
mempool
,
AllocateMemoryForMemPoolChunk
,
user_data
);
mono_image_unlock
(
image
);
}
static
void
*
CaptureHeapInfo
(
void
*
monoManagedHeap
)
static
void
CaptureHeapInfo
(
void
*
monoManagedHeap
)
{
MonoManagedHeap
*
heap
=
(
MonoManagedHeap
*
)
monoManagedHeap
;
MonoDomain
*
domain
=
mono_domain_get
();
...
...
@@ -289,13 +287,10 @@ static void* CaptureHeapInfo(void* monoManagedHeap)
// Allocate memory for each heap section
GC_foreach_heap_section
(
&
iterationContext
,
AllocateMemoryForSection
);
// Allocate memory for the domain mem pool chunk
mono_domain_lock
(
domain
);
mono_mempool_foreach_chunk
(
domain
->
mp
,
AllocateMemoryForMemPoolChunk
,
&
iterationContext
);
mono_domain_unlock
(
domain
);
// Allocate memory for each image mem pool chunk
mono_assembly_foreach
((
GFunc
)
AllocateMemoryForImageMemPool
,
&
iterationContext
);
return
NULL
;
}
static
void
FreeMonoManagedHeap
(
MonoManagedHeap
*
heap
)
...
...
@@ -364,18 +359,7 @@ static void CaptureManagedHeap(MonoManagedHeap* heap)
MonoDomain
*
domain
=
mono_domain_get
();
SectionIterationContext
iterationContext
;
while
(
TRUE
)
{
GC_call_with_alloc_lock
(
CaptureHeapInfo
,
heap
);
GC_stop_world_external
();
if
(
MonoManagedHeapStillValid
(
heap
))
break
;
GC_start_world_external
();
FreeMonoManagedHeap
(
heap
);
}
CaptureHeapInfo
(
heap
);
iterationContext
.
currentSection
=
heap
->
sections
;
GC_foreach_heap_section
(
&
iterationContext
,
CopyHeapSection
);
...
...
@@ -426,6 +410,8 @@ static void FillRuntimeInformation(MonoRuntimeInformation* runtimeInfo)
MonoManagedMemorySnapshot
*
mono_unity_capture_memory_snapshot
()
{
MonoManagedMemorySnapshot
*
snapshot
;
GC_stop_world_external
();
snapshot
=
g_new0
(
MonoManagedMemorySnapshot
,
1
);
CollectMetadata
(
&
snapshot
->
metadata
);
...
...
@@ -433,6 +419,8 @@ MonoManagedMemorySnapshot* mono_unity_capture_memory_snapshot()
CaptureGCHandleTargets
(
&
snapshot
->
gcHandles
);
FillRuntimeInformation
(
&
snapshot
->
runtimeInformation
);
GC_start_world_external
();
return
snapshot
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录