xcode 使用 2 LinkMap 文件 生成

 

 

通过link map文件可以直观的看到那些文件占用的包的大小。这是我分析之后的文件,可以直观的看出那些东西占用了多少的内存。

 

build setting 中  设置 write Link Map  文件。

 

 

 

1.首先列出来的是目标文件列表(中括号内为文件编号):
# Path: /Users/mxr/Library/Developer/Xcode/DerivedData/huashida_home.xcodeproj-fvbzvmahuzlfgqbzehannctanrbl/Build/Products/Debug-iphoneos/4dBookCity.app/4dBookCity
# Arch: arm64
# Object files:
[  0] linker synthesized
[  1] /Users/mxr/Library/Developer/Xcode/DerivedData/huashida_home.xcodeproj-fvbzvmahuzlfgqbzehannctanrbl/Build/Intermediates.noindex/huashida_home.build/Debug-iphoneos/4dBookCity.build/Objects-normal/arm64/Bulk_Arrays_12.o
[  2] /Users/mxr/Library/Developer/Xcode/DerivedData/huashida_home.xcodeproj-fvbzvmahuzlfgqbzehannctanrbl/Build/Intermediates.noindex/huashida_home.build/Debug-iphoneos/4dBookCity.build/Objects-normal/arm64/MXRSnapLearnInviteView.o

 2.接着是一个段表,描述各个段在最后编译成的可执行文件中的偏移位置及大小,包括了代码段(__TEXT,保存程序代码段编译后的机器码)和数据段(__DATA,保存变量值)
# Sections:
# Address   Size        Segment Section
0x100005B00 0x0304A29C  __TEXT  __text
0x10304FD9C 0x00004BC0  __TEXT  __stubs
0x10305495C 0x000044E8  __TEXT  __stub_helper
0x103058E50 0x0021563C  __TEXT  __cstring
0x10326E48C 0x000AD400  __TEXT  __objc_methname
0x10331B88C 0x0000E6BA  __TEXT  __objc_classname
0x103329F46 0x000166E3  __TEXT  __objc_methtype
0x103340640 0x002A0B60  __TEXT  __const
0x1035E11A0 0x001346D4  __TEXT  __gcc_except_tab
0x103715874 0x00008C78  __TEXT  __ustring
0x10371E4EC 0x0004D80C  __TEXT  __unwind_info
0x10376BCF8 0x00000300  __TEXT  __eh_frame
0x10376C000 0x000015D8  __DATA  __got
0x10376D5D8 0x00003280  __DATA  __la_symbol_ptr
0x103770858 0x00001838  __DATA  __mod_init_func
0x103772090 0x000FF7F8  __DATA  __const
0x103871888 0x0006F9C0  __DATA  __cfstring
0x1038E1248 0x00004778  __DATA  __objc_classlist
0x1038E59C0 0x00000290  __DATA  __objc_nlclslist
0x1038E5C50 0x00000708  __DATA  __objc_catlist
0x1038E6358 0x00000038  __DATA  __objc_nlcatlist
0x1038E6390 0x00000910  __DATA  __objc_protolist
0x1038E6CA0 0x00000008  __DATA  __objc_imageinfo
0x1038E6CA8 0x00206C58  __DATA  __objc_const
0x103AED900 0x00027F28  __DATA  __objc_selrefs
0x103B15828 0x000000C0  __DATA  __objc_protorefs
0x103B158E8 0x000041B8  __DATA  __objc_classrefs
0x103B19AA0 0x000030C0  __DATA  __objc_superrefs
0x103B1CB60 0x0000BB54  __DATA  __objc_ivar
0x103B286B8 0x0002CB00  __DATA  __objc_data
0x103B551C0 0x01D52748  __DATA  __data
0x1058A7920 0x00714878  __DATA  __bss
0x105FBD000 0x0012B978  __DATA  __common

 首列是数据在文件的偏移位置,第二列是这一段占用大小,第三列是段类型,代码段和数据段,第四列是段名称。
每一行的数据都紧跟在上一行后面,如第二行__stubs的地址0x10304FD9C就是第一行__text的地址0x100005B00加上大小0x0304A29C,整个可执行文件大致数据分布就是这样。

 3.接着就是按上表顺序,列出具体的按每个文件列出每个对应字段的位置和占用空间
# Symbols:
# Address   Size        File  Name
0x100005B00 0x000000EC  [  2] -[MXRSnapLearnInviteView drawRect:]
0x100005BEC 0x0000024C  [  2] -[MXRSnapLearnInviteView generatorlogoImageQRCode]
0x100005E38 0x0000005C  [  2] _CGRectMake
0x100005E94 0x00000034  [  2] -[MXRSnapLearnInviteView inviteCode]
0x100005EC8 0x00000050  [  2] -[MXRSnapLearnInviteView setInviteCode:]
0x100005F18 0x0000003C  [  2] -[MXRSnapLearnInviteView .cxx_destruct]
0x100005F54 0x000001D8  [  3] -[MXRPKHomeCellViewModel initWithModel:]
0x10000612C 0x0000016C  [  3] -[MXRPKHomeCellViewModel encodeWithCoder:]
0x100006298 0x00000268  [  3] -[MXRPKHomeCellViewModel initWithCoder:]
0x100006500 0x00000040  [  3] -[MXRPKHomeCellViewModel desc]
0x100006540 0x00000044  [  3] -[MXRPKHomeCellViewModel setDesc:]
0x100006584 0x00000040  [  3] -[MXRPKHomeCellViewModel name]
0x1000065C4 0x00000044  [  3] -[MXRPKHomeCellViewModel setName:]
0x100006608 0x00000040  [  3] -[MXRPKHomeCellViewModel pic]
0x100006648 0x00000044  [  3] -[MXRPKHomeCellViewModel setPic:]
0x10000668C 0x00000040  [  3] -[MXRPKHomeCellViewModel classifyId]
0x1000066CC 0x00000044  [  3] -[MXRPKHomeCellViewModel setClassifyId:]
0x100006710 0x000000B8  [  3] -[MXRPKHomeCellViewModel .cxx_destruct]
...
0x1060C82D0 0x000000C0  [3391] _jerrenv
0x1060C8390 0x000204E0  [4793] _GC_arrays
0x1060E8870 0x00000100  [4793] _GC_bm_table
0x1060E8970 0x00000008  [4793] _GC_noop_sink

同样首列是数据在文件的偏移地址,第二列是占用大小,第三列是所属文件序号,对应上述Object files列表,最后是名字。

  

4、已废弃&多余重复的字段

# Dead Stripped Symbols:
#           Size        File  Name
<<dead>>    0x00000001  [  1] literal string: 
<<dead>>    0x00000005  [  3] literal string: desc
<<dead>>    0x00000005  [  3] literal string: name
<<dead>>    0x00000004  [  3] literal string: pic
<<dead>>    0x0000000B  [  3] literal string: classifyId
<<dead>>    0x0000000E  [  3] literal string: .cxx_destruct
<<dead>>    0x0000000B  [  3] literal string: v24@0:8@16
<<dead>>    0x00000008  [  3] literal string: v16@0:8
<<dead>>    0x00000008  [  3] literal string: @16@0:8
<<dead>>    0x00000001  [  4] literal string: 
<<dead>>    0x00000007  [  4] literal string: System
<<dead>>    0x0000000C  [  4] literal string: UnityEngine
<<dead>>    0x0000000A  [  4] literal string: System.IO
<<dead>>    0x00000008  [  5] 8-byte-literal
<<dead>>    0x0000000C  [  5] literal string: PRIMARY KEY
<<dead>>    0x0000000C  [  5] literal string: FOREIGN KEY
<<dead>>    0x00000001  [  5] literal string: 
<<dead>>    0x00000020  [  5] CFString
<<dead>>    0x00000020  [  5] CFString
<<dead>>    0x00000008  [  5] _LKSQL_Type_Text
<<dead>>    0x00000008  [  5] _LKSQL_Type_Int
<<dead>>    0x00000008  [  5] _LKSQL_Type_Double
<<dead>>    0x00000008  [  5] _LKSQL_Type_Blob
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_NotNull
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_PrimaryKey
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_Default
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_Unique
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_Check
<<dead>>    0x00000008  [  5] _LKSQL_Attribute_ForeignKey
<<dead>>    0x00000008  [  5] _LKSQL_Convert_FloatType
<<dead>>    0x00000008  [  5] _LKSQL_Convert_IntType
<<dead>>    0x00000008  [  5] _LKSQL_Convert_BlobType
<<dead>>    0x00000008  [  5] _LKSQL_Mapping_Inherit
<<dead>>    0x00000008  [  5] _LKSQL_Mapping_Binding
<<dead>>    0x00000008  [  5] _LKSQL_Mapping_UserCalculate
<<dead>>    0x00000008  [  5] _LKDB_TypeKey
<<dead>>    0x00000008  [  5] _LKDB_TypeKey_Model
<<dead>>    0x00000008  [  5] _LKDB_TypeKey_JSON
<<dead>>    0x00000008  [  5] _LKDB_TypeKey_Combo
...
<<dead>>    0x00000004  [4311] 4-byte-literal
<<dead>>    0x00000004  [4311] 4-byte-literal
<<dead>>    0x00000004  [4311] 4-byte-literal
<<dead>>    0x00000004  [4311] 4-byte-literal
<<dead>>    0x00000008  [4311] 8-byte-literal
<<dead>>    0x00000008  [4312] 8-byte-literal
<<dead>>    0x00000014  [4320] __ZN15PxcConvexMeshHLC2EP17PxConvexMeshData_
<<dead>>    0x00000004  [4320] 4-byte-literal
<<dead>>    0x00000004  [4320] 4-byte-literal
<<dead>>    0x00000004  [4319] 4-byte-literal
<<dead>>    0x00000076  [4319] literal string: /Applications/buildAgent/work/3d1e9e6e6eefaa7f/SDKs/compiler/iphone/../../../LowLevel/common/include/utils/PxcArray.h

 

 

 

参考 : http://blog.csdn.net/wm9028/article/details/50462320

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值