java内存模型 1、JVM内存区域 方法区:类信息、常量、static、JIT (信息共享) java堆:实例对象 GC (信息共享) OOM VM stack:JAVA方法在运行的内存模型 (OOM) PC: java线程的私有数据,这个数据就是执行下一条指令的地址 Native method ...
分类:
编程语言 时间:
2019-10-11 12:18:23
阅读次数:
94
JVM 一 JVM体系结构概述 1.1类装载器ClassLoader 负责加载class文件,class在文件开头有特定的文件标识,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则有Execution Engine决定. 1.2 三种类加载器 启动类加载器(Bootstr ...
分类:
其他好文 时间:
2019-10-10 22:44:16
阅读次数:
96
基础数据类型(Value type)直接在栈(stack)空间分配,方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收。 引用数据类型,需要用new来创建,既在栈空间分配一个地址空间(reference),又在堆空间分配对象的类变量(object)。 方法的引用参数,在栈空间分配一个地址 ...
分类:
其他好文 时间:
2019-10-10 11:25:38
阅读次数:
151
JDK1.8之前,java内存分为 线程共享区:堆、方法区、直接内存(非运行时数据区的一部分)。线程私有区:程序计数器、虚拟机栈、本地方法栈。 JDK1.8开始,虚拟机取消了方法区,改为元空间。 程序计数器: 程序计数器是一块小的内存空间,存放线程执行的信息,如字节码的行号指示器还有分支、循环、跳转 ...
分类:
编程语言 时间:
2019-10-09 12:09:02
阅读次数:
93
一、加载 1.1 加载阶段需要完成以下三件事情 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 1.2 数组类与非数组类 (一)非数组类: 一个非数组类的加载阶段(准确地说,是加载阶段中获取类的二进制字节流的动作)是开发人员可控性最强的,因为加载 ...
分类:
其他好文 时间:
2019-10-08 20:31:32
阅读次数:
110
垃圾回收机制,简称gc。对堆与方法区的对象进行回收,因为java不像c需要编程人员手动clear,虚拟机通过垃圾回收算法,对堆与方法区的对象进行自动回收处理。 1、引用计数法(jvm没有采用,因为当两个对象相互引用的时候,它们的引用数量永远为1,这样就不会被自动回收,会造成内存泄漏。) 意思就是,对 ...
分类:
其他好文 时间:
2019-10-08 15:53:35
阅读次数:
86
JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构。类的加载最终是在堆区内的Class对象,Clas ...
分类:
其他好文 时间:
2019-10-08 12:44:18
阅读次数:
104
JVM的内存结构: 线程共享:堆(存放创建的各种对象),方法区(存放类信息,静态变量,常量池) 线程私有:栈(每个线程都有自己的栈空间,存放每个方法的局部变量),程序计数器(记录当前字节码指令的位置,执行到拿哪一条字节码指令),本地方法栈(跟栈类似,不同的是执行的native方法) JVM什么时候会 ...
分类:
其他好文 时间:
2019-10-05 20:31:35
阅读次数:
122
4.类的初始化的内存解析 4.1 内存划分的结构: 栈(stack):局部变量 、对象的引用名、数组的引用名 堆(heap):new 出来的“东西”(如:对象的实体,数组的实体),含成员变量 方法区:含字符串常量 静态域:声明为static的变量 (成员变量存在于堆空间中;局部变量:栈空间中) 一维 ...
分类:
其他好文 时间:
2019-10-05 14:31:53
阅读次数:
93
[TOC] Java内存区域 运行时数据区 & Java 内存结构 & Java 内存区域 JDK 1.8 之前: JDK 1.8 : 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区(1.8 转到直接内存的元空间) 直接内存 (非运行时数据区的一部分) 1. 程序计数器 程 ...
分类:
其他好文 时间:
2019-10-05 10:42:22
阅读次数:
113