在java语言中,除了基本数据类型以外,其他的引用都是各类对象的引用,根据生命周期的长短,分为以下四类: 强引用:我们new的对象所关联的引用就是强引用,当jvm内存空间不足时,宁肯抛出oom运行时错误,也不会将该引用回收来解决内存不足的问题。除非将其赋值为null或者超过引用的作用范围,该引用指向 ...
分类:
其他好文 时间:
2020-07-30 22:02:24
阅读次数:
74
说到Java内存区域,可能很多人第一反应是“堆栈”。首先堆栈不是一个概念,而是两个概念,堆和栈是两块不同的内存区域,简单理解的话,堆是用来存放对象而栈是用来执行程序的。其次,堆内存和栈内存的这种划分方式比较粗糙,这种划分方式只能说明大多数程序员最关注的、与对象内存分配关系最密切的内存区域是这两块,J ...
分类:
其他好文 时间:
2020-07-29 21:56:54
阅读次数:
76
对象实例化的几种方式 对象在内存中的布局 直接内存区 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 直接内存是在Java堆外的、直接向系统申请的内存区间。 通常,访问直接内存的速度会优 ...
分类:
其他好文 时间:
2020-07-29 15:29:03
阅读次数:
46
变量是被命名的计算机内存区域,一个变化的量,随着程序的运行,在不断改变。 ...
分类:
其他好文 时间:
2020-07-27 23:49:44
阅读次数:
98
Java运行时数据区: 主要分为线程共享部分和线程独占部分两个部分 线程共享部分: 所有线程都能访问的内存区域,随着虚拟机或者GC而创建和销毁,主要分为方法区和堆内存 方法区: JVM用来存储加载的类信息,常量,静态变量,编译后的代码等数据 方法区在java虚拟机规范中是一个逻辑区划,不同虚拟机的实 ...
分类:
编程语言 时间:
2020-07-23 22:25:11
阅读次数:
85
1、运行时数据区域 1.1、程序计数器 一块较小的内存,它可以看作是当前线程所执行的字节码的行号指示器。 线程独有 唯一一个没有规定OutOfMemoryError情况的区域 1.2、Java虚拟机栈 线程私有,生命周期与线程相同 每个方法被执行的时候都会创建一个栈帧,方法的开始到结束对应了栈帧的入 ...
分类:
其他好文 时间:
2020-07-22 02:07:10
阅读次数:
65
深入理解运行时数据区 代码示例: 1. JVM 向操作系统申请内存: JVM 第一步就是通过配置参数或者默认配置参数向操作系统申请内存空间,根据内存大小找到具体的内存分配表,然后把内存段的起始地址和终止地址分配给 JVM,接下来 JVM 就进行内部分配。 2. JVM 获得内存空间后,会根据配置参数 ...
分类:
其他好文 时间:
2020-07-22 01:43:22
阅读次数:
61
自动内存管理 运行时数据区 运行时数据区主要包括虚拟机栈、本地方法栈、程序计数器、方法区、堆等,其中方法区和堆属于线程共享内存区域;虚拟机栈和本地方法栈属于线程隔离的数据区 程序计数器 占用内存空间较小,可以当作是当前线程执行的字节码行号指示器。jvm的多线程是通过线程切换并分配一定处理时间的方式来 ...
分类:
其他好文 时间:
2020-07-18 22:42:43
阅读次数:
74
字符串相关的类:String String类:代表字符串,Java 程序中的所有字符串字面值(如 "abc" )都作 为此类的实例实现。 String是一个final类,代表不可变的字符序列 当字符串重新赋值时,需要重新指定内存区域,不能使用原有的value进行赋值 当对现有的字符串进行连接操作时, ...
分类:
编程语言 时间:
2020-07-14 21:56:40
阅读次数:
90
1 缓冲池(buffer pool) 缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库中进行读取页的操作,首先将从磁盘读到的页存放在缓冲池中,这个过程称为将页“FIX"在缓冲池中。下一次再读相同的页时,首先判断该页是否在缓冲池中。若在缓冲池中,称该页在缓冲 ...
分类:
数据库 时间:
2020-07-10 20:53:21
阅读次数:
87