我已经继承了一些我需要维护的代码,有时可能不稳定。以前的人们不再可以查询他们为什么在一个无限制的堆栈环境中运行应用程序,我很好奇这可能是什么效果?应用程序似乎有一些不可预知的内存错误,我们无法找到并在Valgrind下运行应用程序不是一种选择,因为它会减慢应用程序的运行速度,导致我们无法真正运行它。因此,对于这可能产生的影响的任何想法都会受到赞赏。以“无限堆栈”大小运行应用程序有什么影响?
2
A
回答
2
如果这是一个单线程标准类型的程序,限制堆栈大小实际上只是一种安全预防措施。它会阻止无限递归在死亡之前吞噬你所有的记忆。通过将限制设置为无限制,您将可以继续在堆栈上进行分配,直到它在堆中进行践踏为止。
在经典的Unix方式中,堆栈和堆栈从内存空间的相对侧开始,并相互分配,即一个成长,另一个成长。当他们击中你将不会得到一个错误,你只会覆盖数据,直到发生不好的事情。
通常,您不需要大堆栈,但是在堆栈上分配大对象或进行深度递归可能会对某些程序造成影响,因此需要更大的堆栈。
编辑:只是为了增加关于单线程的观点。在多线程程序中,您需要分配多个堆栈。这种混乱将从两端向中端的方向发展。在这种情况下,堆栈将以内存空间堆栈一侧的最大堆栈大小为单位分配。然后,当你吹你的堆栈时,你正在践踏另一个线程的堆栈。取决于你的体系结构,你可能可以在那里添加一些页面保护来限制这个,但这可能是TMI在这一点;-)
相关问题
- 1. RSACryptoServiceProvider.KeySize大小有什么影响?
- 2. 堆栈大小的最大使用限制是否有限制?
- 3. 什么设置堆栈大小?
- 4. 最大调用堆栈大小超出 - 无限循环
- 5. 为什么要减小Java JVM线程堆栈的大小?
- 6. 有什么办法可以创建Java Util栈的固定堆栈大小
- 7. 增加eclipse应用程序的堆大小运行
- 8. iPhone的辅助线程堆栈大小是否有上限?
- 9. Linux中进程的堆栈大小是否有限制
- 10. 在Xcode 4中增加应用程序的堆栈大小
- 11. GMAKE更改堆栈大小限制
- 12. 线程堆栈和进程堆栈有什么区别
- 13. Android堆栈大小
- 14. Linux堆栈大小
- 15. 多个状态组件对应用程序有什么影响?
- 16. 反向代理对GWT应用程序有什么影响?
- 17. 堆栈= java.lang.StackOverflowError的:堆栈大小8MB
- 18. 导出寄存器对堆栈的性能影响是什么?
- 19. 最大线程堆栈大小.NET?
- 20. 我的程序,以简化分数被打调用堆栈限制。为什么?
- 21. 在不影响主应用程序的情况下运行带有大型应用程序的iframe,
- 22. 在SAPUI5应用程序中获取最大调用堆栈大小错误
- 23. AngularJS - RangeError:'应用程序启动后超出最大调用堆栈大小
- 24. 在pthread中使用setstacksize函数设置堆栈大小的限制是什么?
- 25. node_modules的大小是否影响离子应用程序的大小?
- 26. 应用程序大小是否影响启动速度和内存大小
- 27. 应用程序终止上堆大小
- 28. 在Java中减少运行时的最大堆栈大小
- 29. 进程堆栈和CPU堆栈有什么区别?
- 30. 为什么我的无堆栈可执行文件很小
越来越多的堆栈将打击内存映射的共享对象比它将打到堆。在64位Linux上,该堆栈将在与地址空间中的库冲突之前以最大15吉比特增长。你可以用'pmap'命令来检查。 –
2015-06-25 09:43:20