最近选择性的看了深入理解java虚拟机这本书,挑了几章对于深入android开发有帮助的章节,大厂面试android或者java的时候也可能会问到,所以大家有爱自取。
很多人都只知道java的内存分为堆和栈,但是其实里面有更多东西,要成为一个高级java/android 开发者对于虚拟机简单了解是必不可少的,所以上一张图,让大家方面记忆。
java内存管理
简书上传图片会被压缩所以大家用这张图片吧: http://img.blog.csdn.net/20170423141113568?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEwMTg5OTg2MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
查看java字节码也是高级java开发者所不可缺少的技能,所以我总结了一张class文件的结构图,大家可以看看。
class文件组成
简书上传图片会被压缩所以大家用这张图片吧: http://img.blog.csdn.net/20170306172800420?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTEwMTg5OTg2MzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
方法的调用并不等于方法的执行,java的方法调用不像c++一样在编译期就知道了方法的具体内存地址,当一个方法被调用了,只是class的常量池中的符号引用被调用,而符号引用会在类加载期间或者运行期间指向真正的方法的内存地址,这就给java带来了强大的动态扩展能力。