归档之于 ‘ 2013 年5月

jvm 垃圾收集算法

1、标记 清除算法(适用于老年代)

最基础的收集算法是“标记-清除”(Mark-Sweep)算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象,它的标记过程其实在前一节讲述对象标记判定时已经基本介绍过了。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。它的主要缺点有两个:一个是效率问题,标记和清除过程的效率都不高;另外一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致,当程序在以后的运行过程中需要分配较大对象时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。

2、复制算法(适用于新生代)

为了解决效率问题,一种称为“复制”(Copying)的收集算法出现了,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对其中的一块进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。只是这种算法的代价是将内存缩小为原来的一半,未免太高了一点。

3、标记-整理算法(适用于老年代)
复制收集算法在对象存活率较高时就要执行较多的复制操作,效率将会变低。更关键的是,如果不想浪费50%的空间,就需要有额外的空间进行分配担保,以应对被使用的内存中所有对象都100%存活的极端情况,所以在老年代一般不能直接选用这种算法。

根据老年代的特点,有人提出了另外一种“标记-整理”(Mark-Compact)算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

我嘲笑我一个基友贫乳

我嘲笑我一个基友贫乳,他对我说了一句 “夏禹的父亲!!!!!!!”, 我不能理解,今天我看先秦历史才知道夏禹的父亲是鯀,这个字念“gǔn”…….…

mac osx 使用技巧

多桌面,全手势,大量热键。
首先习惯使用cmd+q、cmd+w、cmd+tab、cmd+h等基本热键。
习惯control+space打开spotlight和option+space打开alfred。

1、程序间切换:常用程序指定分配给不同的桌面,四指快速切换程序。
尝试使用cmd+tab弹出切换程序列表,对于记忆中可以一次快速切换的程序直接使用热键。
需要多次切换的程序可按住cnd+tab不放手,然后使用触摸板点击。
使用四指上推调用mission control功能切换不同的程序。

2、程序内切换:使用ctrl+tab进行切换。
某些程序可以设置键盘切换不同的选项卡,cmd+1~9,cmd+option+箭头。
使用四指下拉调用expose功能在程序内切换。
使用四指上推调用mission control功能然后点击同一个程序中的子窗口。

阅读全文

mac osx 终端显示中文

一. bash终端显示中文
要显示中文,用 ls -w命令即可,
或者直接修改配置文件 vi /etc/profile
增加 alias ls=’ls -w’
这样不用每次都敲选项-w ,这句放在/etc/bashrc 或者 /Users/Username/.profile 都可以.

二.让bash终端可以输入中文

vi /Users/USERNAME/.inputrc
添加如下内容并保存
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

vi /etc/profile

添加下列内容退出,(放在/Users/USERNAME/.profile 也一样)

export LANG=zh_CN.UTF-8

这样,你的bash就可以显示和输入中文了.

三.在vi 编辑程序中输入中文
vi ~/.profile
增加下列alias 即可在vi 中输入utf8编码的中文
alias vi=’env LC_CTYPE=zh_CN.UTF-8 vi’

今天,看着老板开着崭新的BMW徐徐在大楼前停下

今天,看着老板开着崭新的BMW徐徐在大楼前停下,我不禁露出了艳羡的目光。 老板似乎察觉了我的眼神,便对我说:“只要你肯好好努力、发奋工作,到了明年这时候,我就能换辆更好的车啦!

return top