目录
JDK安装
下载和选择版本
设置环境变量
刷新环境变量
查询JDK安装目录
1. where java
2. java -verbose
查询JDK版本号 & 位数
JDK参数
设置JVM内存
Path刷新
在Eclipse添加JVM信息显示,实时查看App所占内存。
JDK调试工具
jvisualvm
jps
jmap
jstack
jstat
jinfo
JVM参数
JDK安装
下载和选择版本
下载地址 ,通常有x64 MSI Installer,x64 Installer和 x64 Compressed Archive 压缩文件 三个版本。MSI 是 Windows Installer 打包而成的文件,安装前会检查所需环境。exe文件这是成为程序编写、修改等手工打包的过程。为了便于管理,建议采用Compressed Archive版本。
设置环境变量
Win10,通过View advanced system settings找到环境变量。
- JAVA_HOME = C:\devbase\JDK\jdk-18.0.2.1
- CLASSPATH = .;*.*;%JAVA_HOME%\lib\*.jar; 使用更高级版本时,不需要再设置
- PATH =
%JAVA_HOME%\bin
刷新环境变量
refreshenv
Environment Vars (like PATH) have changed. Close/reopen your shell to
see the changes (or in powershell/cmd.exe just type `refreshenv`).
C:\Windows\system32>yarn -v
'yarn' 不是內部或外部命令、可執行的程式或批次檔。C:\Windows\system32>refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..C:\Windows\system32>yarn -v
1.22.19
查询JDK安装目录
-
1. where java
C:\>where java
C:\Java\javapath\java.exe
D:\JDK8\bin\java.exe
-
2. java -verbose
C:\>java -verbose
[0.003s][info][class,load] opened: D:\jdk16\lib\modules
查询JDK版本号 & 位数
没有64-Bit Server,表示32 Bit
C:\Windows\system32>java -version
java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
IA-32架构与IA-64架构(只有服务器使用的CPU)
IA是Intel Architecture(英特尔体系结构)的英语缩写
IA-32架构有32位CPU也有64位CPU。(我们经常使用的CPU)IA-32架构:
本架构的CPU都采用X86指令
Intel,AMD,Cyrix等厂家都生产X86指令集的CPU
其中32位(x86-32)的CPU有i80386,i80486,i80586,i80686,统称i80X86,简称x86
其中64位(x86-64)的CPU有:2006年以后生产的PC机CPU都是64位的,简称x64
最大的优点在于可以全面兼容以前32位x86指令的应用程序,他们都是IA-32架构。
原文链接:https://blog.csdn.net/Dunhuang_Hyoutei/article/details/54914268
JDK参数
-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m
JVM内存的参数
-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
-Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
-Xmn Java Heap Young区大小,不熟悉最好保留默认值;
-Xss 每个线程的Stack大小,不熟悉最好保留默认值;
设置JVM内存
-Xms2048m 和 -Xmx2048m最好设置相同,以避免每次垃圾回收完成后JVM重新分配内存。
1.运行设置内存参数
java -Xmx128m -Xms64m -Xmn32m -Xss16m Test例如:
-Xms2048m -Xmx2048m -Xmn256m -Xss256m
2.eclipse.ini
-vmargs
-Xms2048m
-Xmx2048m
-XX:PermSize=2048m
-xX:MaxPermSize=2048m
3.Eclipse-属性-Installed JREs
4.设置环境变量
变量名:CATALINA_OPTS
变量值:-Xmx128m -Xms64m -Xmn32m -Xss16m
其它参数
-Xms512m 设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmx512m ,设置JVM最大可用内存为512M。
-Xmn200m:设置年轻代大小为200M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128k:
设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内 存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
-Xloggc:file
与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
若与verbose命令同时出现在命令行中,则以-Xloggc为准。
-Xprof跟踪正运行的程序,并将跟踪数据在标准输出输出;适合于开发环境调试。
用-XX作为前缀的参数列表在jvm中可能是不健壮的,SUN也不推荐使用,后续可能会在没有通知的情况下就直接取消了;但是由于这些参数中的确有很多是对我们很有用的,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize等等;
Path刷新
刷新环境变量path,DOS命令下输入:set PATH=C: ,重新打开DOS窗口后输入:echo %PATH% ,可以看到已生效的path。DOS下的操作只会更改副本,不会改变path值。但是对副本的修改却会引发Windows环境变量的刷新。
在Eclipse添加JVM信息显示,实时查看App所占内存。
【-debug options -vm javaw.exe】 在Eclipse显示JVM当前内存使用量
在eclipse根目录下创建文件options,文件内容为:org.eclipse.ui/perf/showHeapStatus=true
修改eclipse根目录下的eclipse.ini文件,在开头处添加如下内容:
- -debug
- options
- -vm
- javaw.exe
JDK调试工具
jvisualvm
D:\JDK8\bin\jvisualvm.exe
jps
winidows查询Java进程 Linux查询 ps -ef | grep java。
D:\>jps
15056 Eclipse
4276 Jps
7428 BootLanguagServerBootApp
9560 ConfigServer
13788 EurekaServer
jmap
JVM Heap Dump Tool,查询JVM的配置信息,目前情况。
jmap -heap 9560Heap Configuration:MinHeapFreeRatio = 0MaxHeapFreeRatio = 100MaxHeapSize = 4221566976 (4026.0MB)NewSize = 88080384 (84.0MB)MaxNewSize = 1407188992 (1342.0MB)OldSize = 176160768 (168.0MB)NewRatio = 2SurvivorRatio = 8MetaspaceSize = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize = 17592186044415 MBG1HeapRegionSize = 0 (0.0MB)
跟进Java进程ID监视进程运行中的jvm物理内存的占用情况。
D:\>jmap -dump:format=b,file=dump.bin 9560
Dumping heap to D:\dump.bin ...
Heap dump file created
通过jmap -histo 9560 或者 jmap -histo 9560>9560.log 将VM 中的heap,以二进制输出成文本
D:\>jmap -histo 9560>9560.lognum #instances #bytes class name
----------------------------------------------1: 198950 22320080 [C2: 65817 9408816 [B3: 32558 4419720 [I4: 135086 3242064 java.lang.String5: 28314 2491632 java.lang.reflect.Method
将9560进程的内存heap输出出来到文件9560heap
D:\>jmap -dump:format=b,file=9560heap 9560
jstack
查询jvm中当前所有线程的运行情况和线程当前状态。
jstat
对JVM实时监控,包括了对进程的classloader,compiler,gc情况
-
class
:统计
class
loader行为信息
-compile:统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
D:\>jstat -class 9560 1000 10
Loaded Bytes Unloaded Bytes Time9264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.999264 16688.0 0 0.0 3.99
jinfo
jinfo -opt pid 输出并修改运行时的java 进程的opts参数。例如
D:\>jinfo.exe -flag PermSize 9560
jconsole
D:\>jconsole
JVM参数
参考文件:
1.JVM(java 虚拟机)内存设置
2.Eclipse 无法启动的原因以及启动参数文件配置修改,很好的文章