Java 所管理的运行时区域(5个): 程序计数器:(当前的线程字节码执行到哪了,该执行哪条字节码了,指向字节码的行号) 可以看做当前线程所执行字节码的行号,也就是用来标识当前线程执行的字节码的具体位置。字节码解释器工作时就是通过改变程序计数器来选取下一条要执行的字节码指令。 是线程私有的,分支、循 ...
分类:
编程语言 时间:
2017-07-19 10:32:35
阅读次数:
113
程序计数器,虚拟机栈,本地方法栈这三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每个桢栈中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或线程结束时, ...
分类:
其他好文 时间:
2017-07-19 01:16:15
阅读次数:
186
方法区:用于存放已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。 当方法区无法满足内存分配需求时,会抛出OutOfMemoryError异常。 方法区是线程共享的。堆:在虚拟机启动时创建,用于存放对象实例和数组元素。 如果堆中没有内存完成实例分配,并且堆也无法扩展时,会抛出OutO... ...
分类:
编程语言 时间:
2017-07-15 17:59:52
阅读次数:
205
原文博客链接:http://www.cnblogs.com/leesf456/p/5218594.html 1.哪些内存需要进行垃圾回收 对于虚拟机中线程私有的区域,如程序计数器、虚拟机栈、本地方法栈都不需要进行垃圾回收,因为它们是自动进行的,随着线程的消亡而消亡,不需要我们去回收,比如栈的栈帧结构 ...
分类:
编程语言 时间:
2017-07-12 12:12:31
阅读次数:
183
这篇文章解释了Java 虚拟机(JVM)的内部架构。下图显示了遵守 Java SE 7 规范的典型的 JVM 核心内部组件。 上图显示的组件分两个章节解释。第一章讨论针对每个线程创建的组件,第二章节讨论了线程无关组件。 线程 JVM 系统线程 每个线程相关的 程序计数器 栈 本地栈 栈限制 栈帧 局 ...
分类:
编程语言 时间:
2017-07-10 14:31:54
阅读次数:
266
如果了解java虚拟机更系统的操作。请阅读 Charlie Hunt , Binu John著《java性能优化权威指南》,James Gosling,Java之父、Steve Wilson,Oracle公司工程副总裁写序。 Java虚拟机运行时数据区: PC寄存器(程序计数器):program c... ...
分类:
其他好文 时间:
2017-07-08 21:03:06
阅读次数:
170
面向对象、内存模型、动态绑定、上下文,上下文无关、运行时。hook注入。函数作用域、访问控制。返回类型、栈帧。动态路由转化为静态绑定,将运行时工作转移到编码时。类别函数追加。编译时object转class结构。 内存管理。 数组、字段、崩溃统计。 编码时、编译时、运行时。 ...
分类:
其他好文 时间:
2017-07-07 18:17:21
阅读次数:
166
1.什么是程序计数器? 程序计数器是一块很小的内存,可以看做是当前线程所执行字节码的行号指示器 2.程序计数器的作用是什么? java通过线程轮流切换的方式来实现多线程,为了线程切换后能恢复到之前执行的位置 3.程序计数器的特点是什么? 每条线程都有自己的程序计数器,各线程互不影响,该内存区是线程私 ...
分类:
编程语言 时间:
2017-07-07 13:22:48
阅读次数:
151
《coredump问题原理探究》Windows版 笔记Debug一、环境搭建1、Win7捕获程序dump2、Windbg符号表设置(Symbols Search Path)二、WinDbg命令三、函数栈帧1、栈内存布局2、栈溢出3、栈的规律4、定位栈溢出问题的经验方法四、函数逆向五、C内存布局1、基... ...
相关内存知识描述 方法区 类的常量池 字段、方法信息 方法字节码 Java堆 和程序开发密切相关 应用系统对象都保存在Java堆中 所有线程共享Java堆 对分代GC来说,堆也是分代的 GC的主要工作区间 Java栈 线程私有 栈由一系列帧组成(因此Java栈也叫做帧栈) 帧保存一个方法的局部变量、 ...
分类:
编程语言 时间:
2017-07-01 22:34:02
阅读次数:
167