在看到一个网页介绍HotSpot JVM的Compressed oop(压缩的对象引用)的设置时,看到LP64和ILP32系统的术语,在wikipedia查了下,发现正常了点知识,记录一下。
首先,L是Long integer的缩写,P是Pointer的缩写,I是integer的缩写,LL是Long Long的缩写。
其次,在64位系统中,Unix/Linux等是LP64数据模式,而Windows是LLP64模式.
Data model | short (integer) | int | long (integer) | long long | pointers/ size_t |
Sample operating systems |
---|---|---|---|---|---|---|
LLP64/ IL32P64 |
16 | 32 | 32 | 64 | 64 | Microsoft Windows (x86-64 and IA-64) |
LP64/ I32LP64 |
16 | 32 | 64 | 64 | 64 | Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS |
ILP64 | 16 | 64 | 64 | 64 | 64 | HAL Computer Systems port of Solaris to SPARC64 |
SILP64 | 64 | 64 | 64 | 64 | 64 | "Classic" UNICOS (as opposed to UNICOS/mp, etc.) |
LP64系统中,long和pointer是64字节,而int是32字节。
当然,在任何的32或64位系统上,long long 类型都是64字节。
多数的32位系统多数都是ILP32模式的(我没细查了),int, long, pointer都是32字节的。
参考资料:
http://en.wikipedia.org/wiki/64-bit_computing
http://en.wikipedia.org/wiki/32-bit
https://wikis.oracle.com/display/HotSpotInternals/CompressedOops