ubuntu中如何更换jdk版本?

ubuntu中如何更换jdk版本?,第1张

修改 /etc/profile 文件,加入:
JAVA_HOME=/home/jdk ;//jdk安装路径
export JRE_HOME=/home/jdk/jre ;
export CLASSPATH=:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH ;
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH ;

解决办法:

在环境变量,path里面jdk的路径放在前面;

删除C:\Windows\System32 里面的3个文件 javaexe   javawexe  javawsexe。要是担心删除后出问题,可以先备份在其他地方;

在控制面板/程序卸载里面,把关于jdk18卸载了,再重装。我之前把18和17 装在同一个java目录下,后来换了个路径重组了18,不知道同java目录有没有影响;

重启电脑,以上方法都试过后,还是有问题,重启后,一起都雨过天晴了。

1 首先下载自己所需的JDK版本(这个应该都会下载吧)
2 然后在本地安装
3 开始配置环境变量
这时候可以新建一个系统变量JAVA_HOME8用来配置JDK 18,一个JDK对应一个系统变量,这样便于切换。
CLASSPATH的配置
这里我把变量值粘出来,希望别搞错了。
;%JAVA_HOME%\lib;%JAVA_HOME%\lib\toolsjar(注意前面应该有一个 )
PATH的配置
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
然后每次想更改JDK版本的时候,只需更改JAVA_HOME的值,这样比较方便。
在安装JDK18时(我的电脑是先安装jdk16再安装的jdk17再安装的jdk18),会将javaexe、javawexe、javawsexe三个可执行文件复制到了C:\Windows\System32目录,这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,所以要将这个目录中这三个文件删除或者移除到其他目录下。
4 最后我们验证一下是否JDK切换成功
打开命令提示行(win+R,cmd),输入java -version

如图25-1 是 JDK 16、17、18 的内存模型演变过程,其实这个内存模型就是 JVM 运行时数据区依照JVM虚拟机规范的具体实现过程。

JDK 16:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区[永久代](字符串常量池、静态变量、运行时常量池、类常量池)

JDK 17:程序计数器、Java虚拟机栈、本地方法栈、堆(字符串常量、静态变量)、方法区[永久代](运行时常量池、类常量池)

JDK 18:程序计数器、Java虚拟机栈、本地方法栈、堆(字符串常量)、元数据(静态变量、运行时常量池、类常量池)
JDK 18 JVM 的内存结构主要由三大块组成:堆内存、元空间和栈,Java 堆是内存空间占据最大的一块区域。

Java 堆,由年轻代和年老代组成,分别占据1/3和2/3。

年轻代又分为三部分, Eden 、 From Survivor 、 To Survivor ,占据比例为8:1:1,可调。

元空间从虚拟机Java堆中转移到本地内存,默认情况下,元空间的大小仅受本地内存的限制,说白了也就是以后不会因为永久代空间不够而抛出OOM异常出现了。 jdk18以前版本的 class和JAR包数据存储在 PermGen下面 ,PermGen 大小是固定的,而且项目之间无法共用,公有的 class,所以比较容易出现OOM异常。

升级JDK 18后,元空间配置参数,-XX:MetaspaceSize=512M XX:MaxMetaspaceSize=1024M。

小技巧通过jps、jinfo查看元空间,如下:

通过jinfo查看默认MetaspaceSize大小(约20M),MaxMetaspaceSize比较大。

其他:关于JDK18 元空间的介绍:  Move part of the contents of the permanent generation in Hotspot to the Java heap and the remainder to native memory >

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13401009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存