前言 在JVM的管控下,Java程序员不再需要管理内存的分配与释放,这和在C和C++的世界是完全不一样的。所以,在JVM的帮助下,Java程序员很少会关注内存泄露和内存溢出的问题。但是,一旦JVM发生这些情况的时候,如果你不清楚JVM内存的内存管理机制是很难定位与解决问题的。 一、JVM 内存区域 ...
分类:
其他好文 时间:
2019-10-05 10:28:29
阅读次数:
99
1、运行时数据区域 2、JVM配置选项 -Xms20m 设置Java堆内存的最大值为20m; -Xmx30m 设置Java堆内存的最小值为30m; -Xms和-Xmx设置相同值,可以避免堆自动扩展; -XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机再出现内存溢出异常时Du ...
分类:
编程语言 时间:
2019-09-30 12:51:25
阅读次数:
86
delete操作: 我们在删除一个指针之后,编译器只会释放该指针所指向的内存空间,而不会删除这个指针本身。 1.假如你不去释放,那么该区域的内存始终不能被其他数据所使用。2.指向该内存的指针是个局部变量,当定义给指针的函数结束并返回时,指针也就消失了,那么就再也找不到该块的内存区域。假如指向该内存区 ...
分类:
编程语言 时间:
2019-09-28 23:55:46
阅读次数:
153
1. Java 内存区域与内存溢出异常1.1 运行时数据区域根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。 1.1.1 程序计数器 内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环 ...
分类:
编程语言 时间:
2019-09-27 12:21:59
阅读次数:
60
三个是处理二进制数据的接口。都是类数组。 1.ArrayBuffer是什么? ArrayBuffer是一个二进制对象(文件,图片等)。它指向固定长度的,连续的内存区域。 上面分配了一个长度为16个字节的内存区域,代表16byte的二进制数据。并且默认每bit内容都是0。 1.特点 1)和数组不同,它 ...
分类:
编程语言 时间:
2019-09-27 01:10:07
阅读次数:
105
u-boot启动方式: 1.设置CPU为管理者模式 2.关看门狗,关中断, 设置时钟频率 3.关MMU,初始各个bank 4.进入board_init_f()函数 (初始化定时器,GPIO,串口等,划分内存区域: 清空gd指向的结构体、通过init_sequence函数数组,来初始化各个函数以及逐步 ...
分类:
其他好文 时间:
2019-09-26 00:14:23
阅读次数:
97
JVM内存包括区域 Heap(堆区) New Generation(新生代) Eden 伊甸园 Survivor From Survivor To Old Generation(老年代) 方法区 Permanent Generation(持久代) Stack(栈区) Metaspace(元空间) D ...
分类:
其他好文 时间:
2019-09-25 22:44:43
阅读次数:
154
1. 文件系统和File类 File类在Java.io包中 对于一个File对象来说它能够代表硬盘上的一个文件或者文件夹 原理:当我们创建一个File对象时,在内存中分配了一块内存区域,创建一个File对象并不会在系统中真的创建一个文件或者文件夹,而只在JVM内存中 创建了一个对象,通过这个对象能够 ...
分类:
其他好文 时间:
2019-09-24 14:01:10
阅读次数:
105
先上个图 这是根据《Java虚拟机规范(第二版)》所画的jvm内存模型。 + 程序计数器:程序计数器是用来记录当前线程方法执行顺序的,对应的就是我们编程中一行行代码的执行顺序,如分支,跳转,循环,异常处理等。所以在多线程下,程序计数器必然是线程隔离的,每个线程都有自己独立的程序计数器。注意,Java ...
分类:
其他好文 时间:
2019-09-23 22:14:47
阅读次数:
117