提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
java语言调用c库时,需要考虑jdk位数和c库位数之间的关系,否则会调用失败。
本文描述了cpu位数、操作系统位数、应用软件位数、jdk位数、dll位数之间的关系和影响。
正文
- CPU位数指一次处理数据的能力,同寄存器位数,寻址能力,指令集位数一样,但需要操作系统支持,64位操作系统才能发挥64位CPU的能力。
- 64位CPU可装32和64系统,32位CPU不能装64系统。64位CPU可以支持到128G内存,32CPU最高到4G内存。
- 软件位数与操作系统位数相对应,32位操作系统只能装32位软件,64位操作系统一般兼容32位软件的。32位操作系统不能装64位JDK。
- Windos和linux的JDK是不一样的,但编译出来的class可以通用,因为jvm会把字节码编译成机器码,这才是物理硬件真正执行的指令集。Java的跨平台特性来源于jvm的跨平台特性。
- 编译java代码用的JDK和运行class文件用的JDK版本不一致时,高jdk兼容低class,若class版本高,则不能运行,会报错unsupported class version error。
- 微软官方对64位进程调用32位dll的描述是,32位进程只能加载32位dll,同理64位。
- 64位JDK编译的java代码调用32位的dll库会报错。