这篇文章给大家分享的是有关java中JVM运行时内存整理的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Java可以用来干什么
Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页开发;5. 企业级应用开发;6. Java大数据开发;7.游戏开发等。
在学习JVM有关内容的时候,我们经常会遇到堆、栈之类的知识点,对于新手来说,JVM的内容问题是不太理解的,这是因为很多人在基础知识点方面,对于概念的理解不是很透彻。
方法区和堆是所有线程共享的,虚拟栈,本地方法栈和程序计数器是线程私有的。也就是说虚拟栈,本地方法和程序计数器是线程隔离的。程序计数器是唯一不会出现oom的部分。
程序计数器可以看成当前线程执行的字节码的行号暗示器。
虚拟机栈和线程的生命周期是一样的,当线程执行的时候会创建一个栈帧,用于存放当前线程的方法出口,局部变量表,操作数栈,动态连接等信息。
本地方法栈用于调用native方法使用。
堆是所有线程共享的部分,用于存储创建的对象。
方法区和堆一样都是所有线程共享的,方法区主要用于存放虚拟机加载的类的信息,常量,静态常量等信息。
除了运行时数据区外还有一部分内存是不受虚拟机管理的部分,这一部分就是直接内存,直接内存是直接在物理的memory分配,我们经常使用的 ByteBuffer. allocateDirect 就是直接在物理内存上分配的。但是在虚拟机里面会有这部分内存的引用,以便对这一部分内存进行管理。
感谢各位的阅读!关于“java中JVM运行时内存整理的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!