1. page cache linux操作系统默认情况下写都是有写缓存的,可以使用direct IO方式绕过操作系统的写缓存。当你写一串数据时,系统会开辟一块内存区域缓存这些数据,这块区域就是我们常说的page cache(操作系统的页缓存)。查看系统内存常用的命令有:vmstat、free、top ...
分类:
系统相关 时间:
2016-08-11 00:33:52
阅读次数:
381
Java常用的内存区域: (1) 栈内存空间:保存所有的对象名称。 (2) 堆内存空间:保存每个对象的具体属性内容。 (3) 全局数据区:保存static类型的属性。 (4) 全局代码区:保存所有的方法定义。 Static:非static声明的方法可以调用static声明的属性或方法。 但stati ...
分类:
编程语言 时间:
2016-08-10 22:36:58
阅读次数:
292
内存映射一个文件并不会导致整个文件被读取到内存中。 也就是说,文件并没有被复制到内存缓存或数组中。相反,操作系统仅仅为文件内容保留了一段虚拟内存。 当你访问文件的不同区域时,这些区域的内容才根据需要被读取并映射到内存区域中。 而那些从没被访问到的部分还是留在磁盘上。 使用mmap()函数可以创建内存 ...
分类:
编程语言 时间:
2016-08-10 09:51:44
阅读次数:
312
一、概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间。Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 下面就每一个区域进行阐述。 二、运行时数据区域 程序计数器 程序计数器,可以看做是当前线程 ...
分类:
编程语言 时间:
2016-08-09 22:15:33
阅读次数:
245
1、struct task_struct 进程内核栈是操作系统为管理每一个进程而分配的一个4k或者8k内存大小的一片内存区域,里面存放了一个进程的所有信息,它能够完整的描述一个正在执行的程序:它打开的文件,进程的地址空间,挂起的信号,进程的状态,从task_struct中可以看到对一个正在执行的程序 ...
分类:
系统相关 时间:
2016-08-07 15:13:59
阅读次数:
371
这里由于想学习markdown所以写在了自己的github上 《2.java内存区域和内存溢出异常》 《3.垃圾收集器与内存分配策略》 ...
分类:
其他好文 时间:
2016-08-07 00:50:04
阅读次数:
153
JAVA通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,每个线程又单独地有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交由线程处理。 一、JVM逻辑内存模型的构成 1.1 程序计数器 Program Counter Regis... ...
分类:
其他好文 时间:
2016-08-05 00:32:32
阅读次数:
108
1、运行时数据区域① 程序计数器(Program Counter Register)是一块较小的内存区域,可以看作是当前线程所执行的字节码的行号指示器如果线程正在执行一个java方法,那么这个计数器记录的是正在执行的虚拟机字节码的指令地址如果正在执行的是Native方法,则这个计数器的值为空(Und... ...
分类:
编程语言 时间:
2016-07-25 16:01:53
阅读次数:
230
Java中的字面常量(区别于final创建的有名常量)通常会保存在常量池中,常量池可以理解为像堆一样的内存区域。但是常量池有一个特性就是,如果常量池中已存在该常量将不会再次为该常量开辟内存 还是看个程序: 输出结果为: s1所引用的字符串对象是字面常量,会存储在常量池, s2所引用的字符串对象也是字 ...
分类:
编程语言 时间:
2016-07-24 20:57:24
阅读次数:
202
缓冲区溢出 在大缓冲区的数据向小缓冲区复制的过程镇南关,由于没注意小缓冲区的边界,“撑爆”了较小的缓冲区,从而冲掉了和小缓冲区相邻内存区域的其他数据而引起的内存问题。 在大缓冲区的数据向小缓冲区复制的过程镇南关,由于没注意小缓冲区的边界,“撑爆”了较小的缓冲区,从而冲掉了和小缓冲区相邻内存区域的其他 ...
分类:
其他好文 时间:
2016-07-21 08:41:32
阅读次数:
432