Sha*_*Zar 1 java static memory-management heap-memory stack-memory
在大约像静态一些文章和教程这个和这个,据说使用静态还是不错的内存管理,因为静态变量类地区的类加载的时间变内存只有一次。
但是我的朋友告诉我,静态方法保存在堆栈中,因为管理堆比堆栈容易,并且垃圾收集器仅在堆上起作用,并且只要应用程序正在运行,就不会清除堆栈,因此请尽量少使用静态方法。您可以。
注意:
我已经在stackoverflow中阅读了有关堆栈内存的相同问题,但是我没有得到太多,因为使用“ PermGen空间”和我不知道的其他词,它们有些复杂和专业。
我希望有人简单地解释我朋友的预付款是否正确?
我知道这取决于,想象一下我既可以使用静态方法也可以使用静态方法进行设计。谈论哪个内存管理更好的方法?
答案是:问这个问题意味着您将时间和精力花在了错误的地方。
获得性能良好的Java应用程序的关键角色:提出一种优雅的OOP设计,该设计可以直接实现您的需求。
您必须了解,“ 即时性能” 编译器几乎在运行时完全发生了“ Java性能魔术” 。而且,JIT最适合我们认为Java中“最佳实践”的那些常用模式。
尝试提出“让整个地方都使用静态”之类的“特殊”想法,最终甚至可能导致性能下降-因为您的“特殊”代码会阻止JIT尽其所能。
因此:分别信任JIT和GC。并确保其他人正在做的事情使这些工具能够以“最佳”的方式工作!
不要让这种过早优化的想法破坏您的OOP设计。即使您的应用程序会陷入罕见的类别,需要密集的低级别的优化-那么就只有一个你的方法:研究GC的工作和JIT 的深度。
换句话说:这样的问题不是真正的问题。含义:
然后-当您遇到“实际”问题时:您必须分析应用程序以了解问题的根本原因。再次:您不允许这种过早的(未受过教育的)优化思想对您的设计产生负面影响。
正如评论所暗示的,我还不够清楚:当您遇到真正的内存问题时,那么您绝对必须理解诸如“烫发生成”之类的术语。因为那样,您必须详细了解GC的工作方式。认真地说:相信这里的人告诉您,static关键字在创建“内存有效”应用程序中没有任何重要作用。
| 归档时间: |
|
| 查看次数: |
311 次 |
| 最近记录: |