
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
内存的应用是每一个计算机操作系统都不可缺少的一个组成部分,而对于Java编程开发语言来说,掌握内存管理也是非常重要的编程知识点,下面我们就通过案例分析来简单了解一下,JVM内存结构都有哪些类型。
1.方法区(MethodArea):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码。运行时常量池也是方法区的一部分,比如Stringw=”hello”;中,hello就被放在了方法区里。方法区是线程共享的。有一点要注意,JDK1.8使用元空间MetaSpace替代方法区,元空间并不在JVM中,而是使用本地内存;
_2.堆区(HeapArea):_堆区是JVM中占地大的区域,所有的实例对象全部都在堆区上,这个位置也是线程共享的;
3.栈区(StackArea):存放了每一个线程的当前状态,每一个线程都有一个自己的栈,而栈中存放了以下数据组成的一个个栈帧:操作数、局部变量表、动态链接、返回地址,需要注意的是,栈中只存引用或者基本类型,而且线程不共享(并没有指内部的优化动作);
4.程序计数器(PCRegisters):它是当前线程执行字节码的行号指示器。在多线程中,为了让每个线程切换回来后能够恢复原来执行的指令,就需要为每个线程启动一个PC计数器,这些计数器之间是互补影响的,因为程序计数器和栈一样都是线程私有的。当然程序计数器是JVM个不会出现内存溢出的组件;
5.本地方法栈(NativeMethodStatck):保存了本地方法,它是当程序调用类库(本地方法)中的方法时才会用到它,即nativemethod。
JNI(Java本地接口)通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。通过JNI实现与本地方法库的调用交互,使得在Java虚拟机内运行的Java代码能够与其它编程语言互相操作,包括_创建本地方法、更新Java对象、调用Java方法,_引用Java类,捕捉和抛出异常等,也允许Java代码调用C/C++或汇编语言编写的库。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。