背景
在看深入理解Java虚拟机(第2版)第二章的内容时,内存溢出在不同JDK版本下会有不同的表现,想测试不同JDK
版本下,内存溢出的效果。
操作
在IDE中写对应内存溢出的代码,添加JVM参数,运行成功。
使用不同JDK版本时,如果每次都需要修改IDE环境较为繁琐,所以想通过命令行的方式来指定JDK版本。
然而
排错
- 文件本身错误
- 在IDE内运行成功,排除
- 命令行使用方式错误
- 检查命令行有无拼写错误或参数错误,排除
- Windows命令行环境下运行成功,排除
- 环境变量错误
下载
安装包(注意都是下载mac下的dmg安装包):
配置
关于Mac系统的环境变量文件入门介绍,可参考Linux环境变量文件。
修改配置文件
vi ~/.bash_profile
1 | 配置版本 |
source ~/.bash_profile
- 通过命令行输入
jdk6
、jdk7
、jdk8
、jdk9
可以快速切换版本
补充
不建议
- 根据苹果的官方说明,Mac OS X 10.5 及以后的版本应该使用 /usr/libexec/java_home 命令来确定 JAVA_HOME。
- 版本发生变化需要修改配置
- 无法适应不同的Java实现(Apple、Oracle、OpenJDk)
关于JDK路径
- 终端输入执行:
which java
,显示/usr/bin/java
- 执行
cd /usr/bin/
,再执行ls -l |grep java
,可看到java此命令是link到/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
- 执行:
cd /System/Library/Frameworks/JavaVM.framework/Versions/
进入后,再执行ls -l
,可看到Current -> A
,也就是Current目录link到A目录。而A目录在安装第一个JDK时就存在,用来JDK多版本管理使用的。
/System/Library/Frameworks/JavaVM.framework/Versions/
下有多个不同(低)版本的目录,但它们链接的都是 CurrentJDK 目录。总之,这些Java都是苹果提供的Java,Oracle 或 OpenJDK 提供的 Java 不在此目录中。
小插曲
取消了/etc/profile
和~/.bash_profile
两个文件中,对JAVA_HOME
添加到PATH
的语句后,输入java -version
依旧出现版本信息。经查验,是因为在/usr/bin
中存在java
。
所有用户皆可用的系统程序放在/bin
超级用户才能使用的系统程序放在/sbin
所有用户都可用的应用程序放在/usr/bin
超级用户才能使用的应用程序放在/usr/sbin
所有用户都可用的与本地机器无关的程序存放在/usr/local/bin
更多文件系统说明,可在terminal
中输入man hier
查看文件系统层次说明。
- 编辑文件时,如需要整行移动
- 通过
dd
当前行,在合适的地方p
。 :5 move 2
- map快捷键
- 安装插件vim-unimpaired
- 装好后按[e或者]e这两个快捷键移动当前行到上面或者下面
- 通过
阅读资料
Linux文件系统中/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin文件夹的区别是什么?