[备忘] Java Object Size

参考文章: http://devblog.streamy.com/2009/07/24/determine-size-of-java-object-class/

Java没有 C 语言的 sizeof, 所以一个对象所占用的内存, 需要用profiler 工具才能得出.

当项目的最底层的对象有千万数量级别时, 需要非常谨慎地设计类, 以控制 Object Size, 否则很容易出现 Out of Memory.

无论是静态函数, 还是成员函数, 都不会计入 Object Size, 所以可以放心地加入function.

尽量用原生数据类型(byte, char, boolean, int ,long, xxx), 而不是wrapper类型(Integer, Boolean, Long, xxx)

int 占 4个字节, 而 Integer占20个字节

String 占 12 bytes, boolean = 1 byte,  byte = 1 byte, int = 4 bytes, long = 8 bytes.

除了原生数据类型和 wrapper类型, 一般对象型数据成员占 4 个 bytes, 有点象指针.

要尽量减少成员变量的数目:

1. 不要为中间运算方便而设置的成员变量.

2. 不要将业务上的parent对象放进来, 尽管在OOP中, 这样会带来很多的方便.

不用说, 集合肯定是优先用 [], 而不是java.util.xxx中的Collections类(比如Map,List)

smithfox Monday 30 May 2011 at 5:06 pm | | Java | Three comments

cygwin eclipse CDT

Cygwin安装时, 如何选择最快的镜像源, 可以参见

http://www.phpvim.net/journal/test-fastest-cygwin-mirror.html

有些还未收录的mirror可能会更快:

http://mirrors.ustc.edu.cn/cygwin/

http://mirrors.163.com/cygwin/

为使eclipse CDT能识别Cygwin, 必须在安装Cygwin时在Devel中将gcc,make,mingw相关选中:

如下图( 注意: 图中只是部分, 全部见图后的文字列表:)

binutils: The GNU assembler, linker and binary utilities
gcc-mingw:Mingw32 GCC compiler upgrade helper
gcc-mingw-core:Mingw32 support headers and libraries for GCC
gcc-mingw-g++:Mingw32 support headers and libraries for GCC C++

gcc4: GCC Release series 4 compiler(C&C++install helper)
gcc4-cor:Core C compiler subpackage
gcc4-g++:C++  subpackage
gdb: The GNU Debugger
make: The GUN version of the 'make' utility
mingw-runtime: MinGW Runtime

为使eclipse CDT最终能识别Cygwin, 还需在Windows环境变量中加入 CYGWIN 变量, 并且将 %CYGWIN%\bin 加入到Path中, 不用重启Windows, 只需重启eclipse CDT, 就OK了.

如果成功如下图:

配置GDB C库的source path



参考了 http://wyding.blogspot.com/2009/04/setup-cygwin-toolchain-in-eclipse-cdt.html

smithfox Monday 16 May 2011 at 10:31 am | | other | Four comments
Used tags: , ,

[备忘] Java enum 两点用法

Effective Java 2nd edition中说: 在Java5以后, 最好的单例模式应该是用 enum 来实现:

enum MySingleton {  
  INSTANCE;  
  public static MySingleton getInstance() {  
    return INSTANCE;  
  }  
}

见一篇中文的分析 http://blog.csdn.net/java2000_net/archive/2009/03/12/3983958.aspx

Read More

smithfox Wednesday 11 May 2011 at 2:11 pm | | Java | Two comments

Micro Patterns in Java Code

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.2115&rep=rep1&type=pdf

有时间再看

smithfox Wednesday 11 May 2011 at 1:58 pm | | Java | Five comments