自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FIRE_TRAY的Android之路

I love Android

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java对象死亡标记的过程

Java对象死亡标记的过程在Java可达性标记算法中,要宣告一个对象死亡,至少要进行两次标记过程:原理摘要首先,如果发现对象从GC root出发不可达,那么就会被第一次标记并进行筛选。筛选条件是此对象是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被执行过了,则会被判定为“没有必要执行”。在确定对象有必要执行finalize()方法

2016-04-30 22:26:25 1253

原创 Java 6 和 7 中String.intern返回引用的不同

Java 6 和 7 中String.intern返回引用的不同先看看下面这段代码,这段代码在Java 6 和Java 7中的运行的结果并不同,为什么呢?public class Main { public static void main(String[] args) { String myString = "Rafe"; String str1 = new

2016-04-30 20:11:33 923

翻译 String.intern in Java 6, 7 and 8 – string pooling (在Java 6,7和8中的String.intern - 字符串常量池化)

String.intern in Java 6, 7 and 8 – string pooling (在Java 6,7和8中的String.intern - 字符串常量池化)原文链接:http://java-performance.info/string-intern-in-java-6-7-8关键点java 6中字符串常量池存储于永久代区中,由于此区域大小固定,因此String.intern的

2016-04-30 19:32:50 4513 1

原创 WeakHashMap的使用

WeakHashMap的使用WeakHashMap的使用与HashMap类似,但是区别在于WeakHashMap对Key保留了弱引用(弱引用,四大引用类型中的一种。对于只有弱引用的对象而言,当垃圾回收进行时,无论系统内存是否足够,总会回收该对象所占用的内存),而HashMap保留了对Key的强引用。也就是说只要该HashMap存在,那么Key所引用的对象就不会被回收。而WeakHashMap的Key

2016-04-29 16:40:01 1860

原创 对象的访问定位:句柄与直接指针

对象的访问定位:句柄与直接指针Java程序通过栈中的reference数据来操作堆上的具体对象,而对象的访问方式取决于虚拟机的实现。主流访问方式有句柄和直接指针两种句柄方式Java堆中将会划出一块内存来作为句柄池,reference对象存储的就是对象的句柄地址。句柄中包含了对象实例数据和类型数据的具体地址:直接指针方式reference对象直接存储对象地址:两者对比句柄由于reference中存储的

2016-04-28 16:53:04 4670

原创 对象的内存布局 (HotSpot)小结

对象的内存布局 (HotSpot)小结总共分为三个部分,对象头、实例数据和对齐填充部分对象头主要用于从存储两部分信息:对象自身的运行时数据和类型指针存储对象自身的运行时数据 内容举例: 哈希码HashCodeGC分代年龄锁状态标识线程持有的锁等长度(未开启压缩指针下):32 or 64 位的虚拟机中分别为 32bit or 64 bit官方名称:Mark Word非固定数据结构:

2016-04-28 16:01:20 1027

原创 存储类型和static关键字作用小结

存储类型和static关键字作用C中的存储类型分为两种,一种是静态(static),另一种是自动(automatic)。注意代码是不存在存储类型的问题,它们恒存在于静态内存中。这里所谈的存储类型,都是针对变量而言。静态存储将期望值放在可执行程序文件中对应的部分,然后将此文件装入内存。当程序执行时,这些对应的区域中已经存好期望的值了。 动态存储在代码块运行时创建变量,结束后销毁。存储位置于运行时栈。s

2016-04-28 11:07:38 672

原创 C 存储类型摘要

C 存储类型摘要存储变量的三种可能位置常规内存运行时栈寄存器默认存储类型变量的默认存储类型是由其定义的位置决定的:在任何代码块外定义的变量: 类型:static位置:静态内存产生时间:先于程序执行之前生命周期: 伴随程序的整个执行周期默认值:0代码块中定义的变量: 类型:automatic 位置:栈产生时间:在程序执行到该代码块之前生命周期: 等同该代码块周期此外

2016-04-28 10:10:53 406

原创 C 链接属性浅析

C 链接属性浅析链接属性用于处理多个文件中同名标识符是否指向同一实体的问题。C 中有三种链接属性——None,Internal和External。让我们分别看看这三种类型。None:表示该标识符没有其他链接,总是独立的。也就是说这些标识符都会指向独立的、不同的实体Internal:表示在同一文件中声明的标识符都会指向同一实体,而不同文件中声明的同名标识符则会指向其他实体 换言之,它修饰的变量仅

2016-04-27 16:42:47 703

原创 #define和typedef在定义指针类型上的优劣

#define和typedef在定义指针类型上的优劣先说下结论:typedef更佳。下面看看代码分析:typedef char *ptr_to_char;char c = 'A';ptr_to_char var = &c;printf("%c",*var);//A这句代码利用了typedef定义了一个新的类型ptr_to_char,并将其定义为指向字符的指针。在后面可以直接利用此来创建字符指

2016-04-26 20:38:45 2296

原创 C 命名指针的更好习惯

C 命名指针的更好习惯笔者平常这样创建指针变量:int* a;笔者当时认为这样写可以更加简洁明了,一看就明白a是一个指向int的指针变量,也就是一个int*类型的变量。但在近日阅读《Pointers on C》一书中,书中认为这样写更好:int *a;书中举了一个例子来说明两者之间的差别,读者请看:int* a,b,c;乍一看,容易产生这样的错觉,会误以为abc都是指向int的指针。实则不然,这里三

2016-04-26 20:04:47 1326

原创 Java枚举类型小结

Java枚举类型小结Java5 中引入了一个新的关键字——enum。我们可以利用enum来创建枚举。Java中的枚举也是一种类。它可以有自己的成员变量、方法,也可以实现接口、定义自己的构造器。同其他类一样,每个Java原文件中只能定义一个public访问权限的枚举类,且此public枚举类名需和Java源文件名相同。枚举类和其他类的不同点不能显示继承其他父类 enum定义的枚举类默认继承了jav

2016-04-26 17:07:46 548

原创 C枚举类型小结

C枚举类型小结枚举类型定义了一组常量,其本质为整型。下面就以星期为背景,对C中的枚举做一个小结枚举的定义enum WEEK{MON,TUE,WES,THR,FRI};此代码定义了一个名为WEEK的枚举类型,其中有周一到周五的5种不同的常量。这些常量本质上为整型,可以赋值给其他整型变量或者赋值给一个WEEK类型的变量。枚举变量的定义方法如下:enum WEEK var = MON;这里定义了一个WEE

2016-04-25 19:15:26 926

原创 const 修饰指针的问题

const 修饰指针的问题判断法则沿着*号划一条线:如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量验证#include <stdio.h>#include <stdlib.h>int main(){ int a = 1; int b = 2; /*const

2016-04-07 12:38:51 510

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除