概述 Java运行时区域中,程序计数器,虚拟机栈,本地方法栈三个区域随着线程的而生,随线程而死,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收问题。而Java堆和方法区则不一样,一个接口的多个实现类需要的内存不一样,一个方法的多个分支需要的内存可能也不一眼,我们只有在运行期,才能知道会创 ...
分类:
其他好文 时间:
2019-08-25 21:38:02
阅读次数:
105
Java的中共有三种变量,分别是类变量,成员变量和局部变量。他们分别存放在JVM的方法区,堆内存和栈内存中。 / ** * @author win * / public class Variables { / ** *类变量 * / private static int a; / ** *成员变量 ...
分类:
其他好文 时间:
2019-08-25 16:15:42
阅读次数:
53
java虚拟机将内存分为哪些区域? 根据Java SE7版本的Java虚拟机规范,虚拟机管理的内存包括5个运行时数据区域: 1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 4. 方法区 5. 堆 运行时数据区各部分的 作用 ? 一个线程所执行的字节码的行号指示器。 字节码解释器会通过改变计数器的 ...
分类:
编程语言 时间:
2019-08-25 15:39:05
阅读次数:
114
一、起源 1960年Lisp语言: 第一门真正使用内存动态分配和垃圾回收的语言。 二、概要 线程相关:程序计数器、虚拟机栈、本地方法栈,不需要考虑垃圾回收 Java堆、方法区:需要考虑垃圾回收 三、垃圾回收算法 1 引用计数算法 2 可达性分析算法 垃圾收集算法 1 标记-清除算法 Mark-Swe ...
分类:
编程语言 时间:
2019-08-23 22:12:47
阅读次数:
122
《深入理解 Java 虚拟机》学习 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管 ...
分类:
编程语言 时间:
2019-08-23 13:20:24
阅读次数:
83
关于静态变量和非静态变量的区别 静态变量:被static修饰的变量,加载类的时候被创建,不随对象的创建而改变,静态变量位于方法区,类消失对应的变量消失。 非静态变量:不被static修饰的变量,每创建一次对象,就会为变量分配一次内存,存放在堆内存中,对象消失对应的变量消失。 JAVA中初始化的顺序: ...
分类:
其他好文 时间:
2019-08-22 18:49:16
阅读次数:
75
Java 208道面试题及部分答案 恢复内容开始 一、Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK是java开发工具包, ...
分类:
其他好文 时间:
2019-08-20 19:10:21
阅读次数:
84
1、JVM管理的内存结构是怎样的? 查看JVM运行时数据区 2、不同的虚拟机在实现运行时内存的时候有什么区别? JVM运行时所需的内存区域,不同的虚拟机实现上有所不同,规范对于方法区的管理是最宽松的: 方法区在虚拟机启动的时候创建,虽然方法区是堆的逻辑组成部分,但是简单的虚拟机实现可以选择在这个区域 ...
分类:
其他好文 时间:
2019-08-20 01:15:13
阅读次数:
71
1、 JVM的内存模型 a) Java虚拟机的内存空间分为五个部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区 b) 程序计数器:程序计数器中存放的是当前线程正在执行的字节码指令的地址。如果当前线程执行的一个本地方法,那么当前的程序计数器为空。 i. 字节码解释器通过程序计数器来依次读取指 ...
分类:
其他好文 时间:
2019-08-19 13:00:34
阅读次数:
59
1. JVM运行时划分哪几个区域?哪些区域是线程共享的?哪些区域是线程独占的? JVM运行时一共划分:程序计数器、虚拟机栈、堆、本地方法栈、方法区。 线程共享的数据区域:堆、方法区。 线程独享的数据区域区域:程序计数器、虚拟机栈、本地方法栈。 2. 这几个内存区域分别存放什么数据? 程序计数器记录当 ...
分类:
其他好文 时间:
2019-08-17 09:16:00
阅读次数:
74