前言 该读书笔记用于记录在学习<深入理解Java虚拟机--JVM高级特性与最佳实践>一书中的一些重要知识点,对其中的部分内容进行归纳,或者是对其中不明白的地方做一些注释.主要是方便之后进行复习. 目录 <深入java虚拟机>读书笔记之Java内存区域 垃圾收集器与内存分配策略 哪些内存需要垃圾回收 在上一节中有提到在运行时数据区域包括:堆.虚拟机栈.本地方法栈.程序计数器.方法区(JDK1.7及之前).元空间(JDK1.8及之后).在这些区域中,程序计数器占用内存极小,可以忽略:栈…
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-datastruct/sds.html 数据类型定义 与sds实现有关的数据类型有两个,一个是 sds: // 字符串类型的别名 typedef char *sds; 另一个是 sdshdr: // 持有sds的结构 struct sdshdr { // buf中已经被使用的字符串空间数量 int len…
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并指定了初始值时,数组初始化完成.程序以后将不能重新改变数组对象在内存中的位置和大小. 从用法角度来看,数组元素相当于普通变量,程序既可把数组元素的值赋给普通变量,也可把普通变量的值赋给数组元素. 1.1数组初始化 1.1.1 Java数组是静态的 Java语言是典型的静态语言,因此Java的数组是静…
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/23/3095907.html 内核的内存使用不像用户空间那样随意,内核的内存出现错误时也只有靠自己来解决(用户空间的内存错误可以抛给内核来解决). 所有内核的内存管理必须要简洁而且高效. 主要内容: 内存的管理单元 获取内存的方法 获取高端内存 内核内存的分配方式 总结 1. 内存的管理单元 内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区. 1.1 页 页的大小与体系结构有关,…
Java内存管理分为两个方面:内存分配和内存回收.这里的内存分配特指创建Java对象时JVM为该对象在堆内存中所分配的内存空间.内存回收指的是当该Java对象失去引用,变成垃圾时,JVM的垃圾回收机制自动清理该对象,并回收该对象所占用的内存.由于JVM内置了垃圾回收机制回收失去引用的Java对象所占用的内存,所以很多Java开发者认为Java不存在内存泄漏,资源泄漏的问题.实际上这是一种错觉,Java程序依然会有内存泄漏. 由于JVM的垃圾回收机制由一条后台线程完成,本身也是非常消耗性能的,因此…
1 Redis 是C语言实现的 2 C字符串是 /0 结束的字符数组 3 Redis具体的动态字符串实现 /* * 保存字符串对象的结构 */ struct sdshdr { // buf 中已占用空间的长度 使求字符串长度操作变成0(1) int len; // buf 中剩余可用空间的长度 对字符串字符增加修改时 不大于len+free不用重新分配内存(初始化一个字符串时free为0 当修改字符串时会对free进行赋值) int free; // 数据空间 char buf[]; }; sd…
1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. <span style="font-family:SimSun;font-size:18px;">package com.String; public class Sample13_1 { public static void main(String args[]) { //使用…
1.C函数库提供了两个函数,malloc和free,分别用于执行动态内存分配和释放,这些函数维护一个可用内存池. void *malloc(size_t size);//返回指向分配的内存块起始位置的指针.分配的是一块连续内存.分配单位:字节 void free(void *point); 另外 void *calloc(size_t num_elements,size_t element_size);//分配内存并初始化为0 void realloc(void *ptr, size_t new…
JavaScript 变量可以用来保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下5种基本数据类型:Undefined.Null.Boolean.Number 和String.基本类型值和引用类型值具有以下特点: 基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中: 从一个变量向另一个变量复制基本类型的值,会创建这个值的一个副本: 引用类型的值是对象,保存在堆内存中: 包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针: 从一个变量向另一个变…
jvm内存模型如下图 垃圾回收: 方法区: 这部分的垃圾回收性价比低,一般不要求回收,暂认为是永久代 heap:新生代和永久代之分.永久代主要回收废弃常量和无用的类. 垃圾回收算法: 1. 标记-清除算法 标记判断: a) 该类所有实例都已经被回收,也就是heap中,不存在该类任何实例. b) 加载该类的ClassLoader已经被回收 c) 该类对应的java.long.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法. 问题:1. 效率不高 2.空间问题,造成大量不连续…