前言:Java虚拟机的重要性不言而喻,不管是在实际工作中,还是面试中。 1.JVM架构 要点: 主要了解Java虚拟机运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区。 参考: https://blog.csdn.net/seu_calvin/article/details ...
分类:
编程语言 时间:
2018-04-06 14:03:06
阅读次数:
170
一、运行时数据区域 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、本地方法栈、堆、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区 1.1 程序计数器 程序计数器是一块较小的内存,他可以看做是当前线程所执行的行号指示器。字节码解释器工作的时候就是通过改变 ...
分类:
编程语言 时间:
2018-04-02 16:03:26
阅读次数:
175
Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的 ...
分类:
编程语言 时间:
2018-03-30 13:14:20
阅读次数:
169
一提到JVM运行的的内存划分,相信大家都会第一反应想到堆内存和栈内存。如果再分清楚一些,就是常说的运行时数据五大部分:方法区,虚拟机栈,本地方法栈,堆,程序计数器。本文重点聊一聊直接内存(DirectMemory),直接内存并不是运行时数据区的一部分,也不是Java虚拟机规范中定义的内在区域。它通过Unsafe类的allocateMemory()方法申请分配内存,可以通过-XX:MAxDirect
分类:
其他好文 时间:
2018-03-29 20:04:52
阅读次数:
128
GCRoots: 虚拟机栈(栈帧中的局部变量表)引用的对象 方法区中静态属性引用的对象 方法去中常量引用的对象 本地方法栈中JNI(NATIVE方法)引用的对象 引用: reference类型数据中存储着另外一块地址的起始地址 强引用:通常的引用,只要引用存在便不会被回收 软引用:有用但非必需的对象 ...
分类:
其他好文 时间:
2018-03-26 16:09:19
阅读次数:
176
根搜索算法 原理:设立若干种根对象,当任何一个根对象到某一个对象均不可达时,则认为这个对象是可以被回收的。一般是对象持有的引用指向该对象不可达 在JAVA语言中,可以当做GC roots的对象有以下几种: 1、虚拟机栈中的引用的对象。 2、方法区中的类静态属性引用的对象。 3、方法区中的常量引用的对 ...
分类:
编程语言 时间:
2018-03-20 14:00:02
阅读次数:
194
写在前面:这篇随笔主要记录一下递归调用引起的虚拟机栈溢出的情况以及通过参数配置了虚拟机栈大小来使递归调用可以顺利执行。并没有对涉及到的一些概念进行详细的解释(因为我自己目前对这些概念并不是特别清楚),可以用于参考的关键字: 关键字:java虚拟机栈,栈溢出,栈帧 今天在对比快速排序与冒泡排序时,通过 ...
分类:
编程语言 时间:
2018-03-18 14:57:42
阅读次数:
367
Java内存区域划分 1、程序计数器。当前线程所执行字节码的行号指示器,程序的分支、循环、跳转、异常、线程恢复等都需要依赖程序计数器。 2、Java虚拟机栈。线程私有,线程运行时创建的栈帧,用于存储局部变量、动态连接、方法出口等信息 3、本地方法栈。类似于Java虚拟机栈,不过用于执行本地(nati ...
分类:
编程语言 时间:
2018-03-15 11:17:01
阅读次数:
238
1.java数据区域 方法区(Method Area)存放加载类的信息,常量,静态变量,编译后的代码和数据 虚拟机栈(VM Stack) 局部变量,动态链接,方法出口,方法,操作数栈 本地方法栈(Native Method Stack) 类似虚拟机栈 堆(Heap) 新建的对象实例,垃圾回收的主要对 ...
分类:
其他好文 时间:
2018-03-09 01:46:24
阅读次数:
174
JVM运行时数据区域图: 程序计数器 程序计数器(program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 Java虚拟机栈 虚拟机栈描述 ...
分类:
编程语言 时间:
2018-03-07 14:59:00
阅读次数:
207