JDK && JAVA

目录

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找到环境变量。

  1. JAVA_HOME  =  C:\devbase\JDK\jdk-18.0.2.1
  2. CLASSPATH  =  .;*.*;%JAVA_HOME%\lib\*.jar;  使用更高级版本时,不需要再设置
  3. 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文件,在开头处添加如下内容:

  1. -debug  
  2. options  
  3. -vm  
  4. 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 9560

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 4221566976 (4026.0MB)
   NewSize                  = 88080384 (84.0MB)
   MaxNewSize               = 1407188992 (1342.0MB)
   OldSize                  = 176160768 (168.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 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.log

num     #instances         #bytes  class name
----------------------------------------------
   1:        198950       22320080  [C
   2:         65817        9408816  [B
   3:         32558        4419720  [I
   4:        135086        3242064  java.lang.String
   5:         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     Time
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 16688.0        0     0.0       3.99
  9264 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 无法启动的原因以及启动参数文件配置修改,很好的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值