你真的了解JVM?JVM中有哪些内存区域,都有哪些作用?
发布时间:2019-07-16 18:53:40 所属栏目:空间 来源:正号先生
导读:1.0前言 之前我们探讨过一个.class文件是如何被加载到jvm中的。但是jvm内又是如何划分内存的呢?这个内被加载到了那一块内存中?jvm内存划分也是面试当中必被问到的一个面试题。 1.1什么是JVM内存区域划分? 其实这个问题非常简单,JVM在运行我们写好的代码时
此时jvm的内存划分的最终模型为: ![]() 6.0其他区域内存 很多java程序猿对这一块区域的接触是非常少的。 其实在JDK的很多底层代码API中,比如NIO。 如果你去看源码会发现很多地方的代码不是java写的,而是走的native方法去调用本地操作系统里面的一些方法,可能调用的都是c语言写的方法。 比如说:public native int hashCode(); 在调用这种native方法的时候,就会有线程对应的本地方法栈,这个其实类似于java虚拟机栈。也是存放各种native方法的局部变量表之类的信息。 还有一块区域,是不是jvm的,通过NIO中的allocateDirect这种API,可以在jva堆外分配内存空间,然后通过java虚拟机栈里的DirectByteBuffer来引用和操作堆外内存空间。 7.0总结 基本上jvm的核心内存区域的功能都解释清楚了,面试能回答到这一个地步应该也能顺利通过了。 我们需要重点关注的是方法区,程序计数器,java虚拟机栈和java堆内存这些内存区域的作用。 【编辑推荐】
点赞 0 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |