大家好,今天小编关注到一个比较有意思的话题,就是关于堆堆栈旅游攻略的问题,于是小编就整理了1个相关介绍堆堆栈旅游攻略的解答,让我们一起看看吧。Java运行时区域,哪些区域是线程私有的?哪些是共有的?Java运行时区域,哪些区域是线程私有的?...
大家好,今天小编关注到一个比较有意思的话题,就是关于堆堆栈旅游攻略的问题,于是小编就整理了1个相关介绍堆堆栈旅游攻略的解答,让我们一起看看吧。
1.程序计数器(线程私有)
程序计数器是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器。
分支、循环、跳转、异常处理、线程处理等基础功能都需要依赖这个计数器完成。
由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的。为了线程切换后能恢复到正确的执行位置,
每条线程都需要一个独立的程序计数器,各线程之间的计数器互不影响,独立存储。
1.如果线程正在执行的是Java方法,计数器记录的正在执行的虚拟字节码指令的地址;
2.如果正在执行的是Native方法,这个计数器的值为空。
程序计数器是唯一一个没有规定任何OutOfMemoryError的区域。
2.Java虚拟机栈(线程私有)
概述
对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。
运行时数据区域
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。
线程私有的:
线程共享的:
到此,以上就是小编对于堆堆栈旅游攻略的问题就介绍到这了,希望介绍关于堆堆栈旅游攻略的1点解答对大家有用。