谈谈Java内存管理
对于一个Java程序员来说,大多数情况下的确是无需对内存的分配、释放做太多考虑,对Jvm也无需有多么深的理解的。 但是在写程序的过程中却也往往因为这样而造成了一些不容易察觉到的内存问题,并且在内存问题出现的时候,也不能很快的定位并解决。 因此,了解并掌握Java的内存管理是一个合格的Java程序员必需的技能,也只有这样才能写出更好的程序,更好地优化程序的性能。 一、背景知识 根据网络可以找到的资料以及笔者能够打听到的消息,目前国内外著名的几个大型互联网公司的语言选型概括如下: Google: C/C++ Go Python Java JavaScript,不得不提的是Google贡献给java社区的guava包质量非常高,非常值得学习和使用。 Youtube、豆瓣: Python Fackbook、Yahoo、Flickr、新浪: php(优化过的php vm) 网易、阿里、搜狐: Java、PHP、Node.js Twitter: Ruby->Java,之所以如此就在于与Jvm相比,Ruby的runtime是非常慢的。并且Ruby的应用比起Java还是比较小众的。不过最近twitter有往scala上迁移的趋势。 可见,虽然最近这些年很多言论都号称java已死或者不久即死,但是Java的语言应用占有率一直居高不下。 与高性能的C/C++相比,Java具有gc机制