赞
踩
为什么需要学习jvm的知识?
jvm的知识重点是内存分配和垃圾回收,这些都是能更深入理解java代码运行原理的关键,也是求职面试中绕不过去的一个坎。
并且它还涉及到并发编程的一些知识点。所以,说jvm是重点一点也不为过。
那么如何从高屋建瓴的角度对jvm的知识进行说明呢?
对此可将其分为几个部分进行理解。这就需要我们对知识打散再重组,使其更加具有逻辑性。
首先,我们需要知道jvm的大概组成:类加载器、运行时数据区域、执行引擎、本地方法库。
如果从代码执行的先后次序:我们可能需要按类加载器、运行时数据区域、执行引擎这个顺序进行知识的组织。
但是,如果要将类加载器讲明白,则首先需要解释清楚什么是类文件,它的结构是怎样的。但是,这部分的内容真心不是那么的重要。至少和其他内容比,它不是那么地重要。
所以从开发人员的角度,和我们平时工作最密切的还是内存的那一部分。
那么关于内存,我们需要按怎样的顺序去进行学习呢?当然还是先按自顶而下的顺序整理。
首先,要清楚jvm在运行时的数据区域有哪些?并且要知道在jdk1.8之前和之后是有一些变化的。
其中最重要也是接触最多的是:堆、栈和方法区。
其中的堆主要是用于存放对象实例的。在oop中对象绝对是一个核心概念,所以堆的重要性就不言而喻了。
那么围绕堆和对象的知识点就来了:
刚才讲了对象的创建以及内存的分配,如果对象不再需要了,那么是不是会涉及到内存的回收?
jvm中的内存宣称是自动管理的。虽然我们不需要主动对其进行释放,但是其中的垃圾收集原理是必须掌握的。
因为万一内存没有按照既定的样子进行回收,我们需要知道具体的原因,否则只有两眼一抹黑了。
那么,和内存回收的知识有哪些呢?
在oo的世界里,一切皆对象。如果需要一个对象执行某个动作,就需要通过调用方法的方式来传递消息。
说到方法的调用,就需要了解方法栈。Java方法的调用过程中会创建栈帧。虽然我们常说对象都是在堆中存储的,但是当某些情况下,会将方法内创建的对象存储在栈中,这种情况有个专门的术语叫“栈上分配”。
关于栈,我们需要了解下面的知识:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。