最新消息:20190717 VPS服务器:Vultr新加坡,WordPress主题:大前端D8,统一介绍入口:关于

[已解决]swift中调试app出错崩溃:malloc mach_vm_map size failed error code 3

Swift crifan 2200浏览 0评论
2016-03-17 14:19:16.728 JianDao[5151:154631] Unknown class _TtC7JianDao14ViewController in Interface Builder file.
didFinishLaunchingWithOptions
applicationDidBecomeActive 2016-03-17 06:19:21 +0000
prevStoredUser=Optional("15051464654")
prevStotedPassword=Optional("111111")
JianDao(5151,0x4dea000) malloc: *** mach_vm_map(size=8388608) failed (error code=3)
*** error: can’t allocate region securely
*** set a breakpoint in malloc_error_break to debug

搜:

malloc mach_vm_map size  failed error code 3

ios9 – (XCode 7 + iOS 9 + iPhone 4s/iPhone5 only) issue: "malloc: *** mach_vm_map(size=1048576) failed (error code=3)" – Stack Overflow

monotouch – mach_vm_map failed (error code=3) – Stack Overflow

不过刚才有提示,对于storyboard有个更改,不可恢复,问我是否保存

我保存了。

不知道,是否对此问题有影响。

objective c – mach_vm_map(size=) failed (error code=3) – Stack Overflow

malloc: *** mach_vm_map(size=1048576) failed(error code=3) *** err_Forever_Love_新浪博客

[erlang-bugs] malloc error: can’t allocate region

Despite reinstall Dropbox quite with error code 3 – Dropbox Community

Crash Mac version and crashing

可以看到,一直在吃内存:

最近记得改动的代码,好像只有:

        passwordTextField.leftView = leftPaddingView
        passwordTextField.leftViewMode = UITextFieldViewMode.Always

拿到是这个导致的??

结果还真是的。。。

去掉后,就可以了。

感觉像是:

此处的,出错时的完整代码是:

把一个UIView,作为TextField的leftPadding的view,赋值给了两个TextField:

        let leftPaddingView = UIView()
        leftPaddingView.frame = CGRectMake(0, 0, 10, textFieldHeight)
        userTextField.leftView = leftPaddingView
        userTextField.leftViewMode = UITextFieldViewMode.Always
        passwordTextField.leftView = leftPaddingView
        passwordTextField.leftViewMode = UITextFieldViewMode.Always

结果就导致了此处的内存溢出直到崩溃。。。

把后者去掉,重现创建一个UIView,作为padding的view:

        let userLeftPaddingView = UIView()
        userLeftPaddingView.frame = CGRectMake(0, 0, 10, textFieldHeight)
        let pwdLeftPaddingView = UIView()
        pwdLeftPaddingView.frame = CGRectMake(0, 0, 10, textFieldHeight)
        userTextField.leftView = userLeftPaddingView
        userTextField.leftViewMode = UITextFieldViewMode.Always
        passwordTextField.leftView = pwdLeftPaddingView
        passwordTextField.leftViewMode = UITextFieldViewMode.Always

即可避免此处的app的内存溢出的崩溃。

[总结]

当app出现

malloc: *** mach_vm_map(size=8388608) failed (error code=3)

之类的错误时,往往是内存溢出:

1.可以通过Xcode调试工具

Debug Navigator-》Memory

中查看到内存异常:

此处内存一直增大,直到崩溃。

2.解决此问题的办法是:

找到你最近的一次代码的改动,找出具体是增加了哪些代码,而导致的内存泄漏。

我此处的就是把同一个UIView赋值给了两个TextFiled作为leftPadding的view,而导致的内存泄漏。

改好了代码,即可解决此问题。

转载请注明:在路上 » [已解决]swift中调试app出错崩溃:malloc mach_vm_map size failed error code 3

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
58 queries in 0.195 seconds, using 18.63MB memory