类内部方法外部定义的变量为成员变量,方法内部定义的变量为局部变量。 局部变量为基本数据类型(int,long,string,double等)的存储在虚拟机栈中,相应的数据也存放在栈中。 局部变量为引用类型(new)的变量本身存储在虚拟机栈中,相应的引用对象存放在堆中。 成员变量存储在该类在堆中生成的 ...
分类:
编程语言 时间:
2018-12-04 17:04:03
阅读次数:
241
2.1 C、C++内存管理是由开发人员管理,而Java则交给了JVM进行自动管理 2.2 JVM运行时数据区:方法区、堆(运行时线程共享),虚拟机栈、本地方法栈、程序计数器(运行时线程隔离,私有) 2.2.1 程序计数器(Program Counter Register):每一个线程都独有一个程序计 ...
分类:
其他好文 时间:
2018-12-01 15:23:35
阅读次数:
178
1.判断对象是否已死的方法可达性分析可作为GCRoots的对象包括下面几种:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(即一般说的Native方法)引用的对象。2.垃圾收集算法:标记-清除(MarkSweep)算法:分标记和清除两个阶段,缺点:一是两个阶段效率低,二是产生内存碎片。复制(Copying)算法:把内存平均分为两
分类:
编程语言 时间:
2018-11-19 21:39:48
阅读次数:
210
一,java虚拟机所管理的运行时数据区域分为:程序计数器、java虚拟机栈、本地方法栈、java堆、方法区、运行时常量池。 1,程序计数器:(线程私有、没有规定OutOfMemoryError) 程序计数器是一块较小的内存空间,它可以看做当前线程所执行的字节码的行号指示器。 在虚拟机的概念模型里,字 ...
分类:
编程语言 时间:
2018-11-10 12:43:02
阅读次数:
200
前言: 本文主要是我自己总结的一些技巧,可能对搜到这篇的来观看的朋友有些很难理解,请见谅。 一、JVM的运行时数据区 总共有两个区域: 1.线程共享区:方法区,java堆 2.线程独占区:虚拟机栈,本地方法栈,程序计数器 二、程序计数器 程序计数器就是程序执行代码的行号(也称为地址),每一个程序都会 ...
分类:
其他好文 时间:
2018-11-05 23:44:45
阅读次数:
310
在JVM中,虚拟机栈和本地方法栈(执行实例方法的内存区)是线程私有的,也就是说每个线程都会维护自己的一块内存区域,所有的变量由该线程专门控制,这称之为线程隔离。只有多线程同时操作一块资源,比如同一个实例对象,静态变量(静态变量在内存中只加载一次,但是静态变量是类级别的,如果多个实例访问该变量会引起并 ...
分类:
编程语言 时间:
2018-10-25 19:29:55
阅读次数:
310
Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。今天我就 Java 虚拟机栈做一些比较浅的探究。
分类:
编程语言 时间:
2018-10-22 21:22:14
阅读次数:
142
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈: 每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方 ...
分类:
其他好文 时间:
2018-10-18 22:07:49
阅读次数:
233
1. Java内存区域与内存溢出异常 Java内存区域与内存溢出异常 运行时数据区域 程序计数器 当前线程所执行的字节码的行号指示器 当前线程私有 不会出现OutOfMemoryError情况 java虚拟机栈 线程私有,生命周期与线程相同 java方法执行的内存模型,每个方法执行的同时都会创建一个 ...
分类:
编程语言 时间:
2018-10-17 19:02:33
阅读次数:
146
内存区域总的分为:方法区、堆、虚拟机栈、本地方法区和程序计数器: 1,程序计数器(program counter register):看作当前线程所执行的字节码计数器,通过改变计数器的值来确定下一条需执行的字节码指令。由于java多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,对于但处理 ...
分类:
编程语言 时间:
2018-10-16 18:45:29
阅读次数:
181