运行时内存分为: 1、方法区 2、堆 3、虚拟机栈 4、本地方法栈 5、程序计数器 方法区、堆是共享的,所有线程都可以读取 虚拟机栈、本地方法栈、程序计数器是线程私有的,每个线程单独一套,它们在线程创建时生成,在线程死亡时销毁 堆分为年轻代,老年代,永久代。分区的目的是为了更快的分配内存和更好的执行 ...
分类:
编程语言 时间:
2019-02-26 17:13:31
阅读次数:
189
Java虚拟机在执行Java程序的过程中会把它所管理的内存化分为若干个不同的数据域。如下图所示,主要包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。 1.1 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,可以当成单签线程所执行的资码 ...
分类:
编程语言 时间:
2019-02-18 23:04:44
阅读次数:
221
六、java内存模型 1.线程独占部分 (1)程序计数器 (2)Java虚拟机栈 (3)本地方法栈 (4)递归为什么会引发java.lang.StackOverFlowError异常吗 2.线程共享部分 (1)MetaSpace和PermGen本质区别 (2)java堆 ...
分类:
编程语言 时间:
2019-02-12 22:04:25
阅读次数:
177
一:java内存区域 jvm布局: jdk1.6版本JVM布局分为:heap(堆),method(方法区),stack(虚拟机栈),native stack(本地方法栈),程序计数器共五大区域。 其中方法区包含运行时常量池。堆和方法区是线程共享的,虚拟机栈和本地方法栈、程序计数器是随线程而创建的。 ...
分类:
其他好文 时间:
2019-02-08 20:12:08
阅读次数:
135
1、学习目的 当需要排查各种内存溢出、 内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 Java内存运行时区域的各个部分,其中程序计数器、 虚拟机栈、 本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊 ...
分类:
编程语言 时间:
2019-02-01 10:13:45
阅读次数:
216
一.需要回收的内存区域 程序计数器、虚拟机栈、本地方法栈 3 个区域随线程生灭(因为是线程私有),栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处 ...
分类:
编程语言 时间:
2019-01-31 22:52:36
阅读次数:
237
程序计数器: Java虚拟机栈 【示例1-1】: Java虚拟机栈内存溢出: Java方法执行动态内存模型图: 本地方法栈:与Java虚拟机栈的运行都是一致的,唯一的区别是:Java虚拟机栈为虚拟机执行Java方法服务,而本地方法栈为虚拟机执行native方法服务。 Java堆:是虚拟机中管理内存最 ...
分类:
编程语言 时间:
2019-01-28 10:52:55
阅读次数:
195
主要讲synchronize两部分问题 1.可重入锁, 2.synchronize区域的合理使用。 JVM中的区域主要分为五部分 线程私有 虚拟机栈、本地方法栈、程序计数器 线程共享: java堆、方法区 所谓的线程安全针对的就是线程共享区域,从此处我们得到一个结论:无状态的类是线程安全的,因为不存 ...
分类:
编程语言 时间:
2019-01-24 11:55:14
阅读次数:
180
JVM的逻辑内存模型图 [逻辑内存模型图] JVM内部分区 其实JVM内部不仅仅只有栈和堆 包括 程序计数器 、 Java 虚拟机栈 、本地方法栈、Java 堆、方法区等 1. 程序计数器 线程私有,较小的内存空间,如果线程正在执行的是一个Java 方法,这个计数器记录的是正在执行的虚拟机字节 码指 ...
分类:
其他好文 时间:
2019-01-21 22:54:13
阅读次数:
176
区域简介 JVM运行时区域有些随着虚拟机进程的启动而存在,有些依赖于用户线程的启动和结束而建立和销毁,大致分为以下几类:方法区,虚拟机栈,本地方法栈,堆,程序计数器,概念图如下(源于《深入理解JAVA虚拟机 JVM高级特性》): 程序计数器 当前线程所执行的字节码的行号指示器,是一块各个线程私有的内 ...
分类:
其他好文 时间:
2019-01-09 18:37:27
阅读次数:
174