简介
Java虚拟机(Java Virtual Machine 简称JVM)是运行所有Java程序的抽象计算机,在计算机上通过软件模拟实现的,有想象中的处理器,堆栈,寄存器等,还有相应的指令系统。用于执行字节码(Java编译后的中间代码)
作用:
执行Java字节码:JVM负责将Java源代码编译成字节码,然后在运行时执行这些字节码。
跨平台性:JVM使Java具有跨平台特性,因为字节码可以在任何支持Java的平台上运行,只要有相应的JVM实现。
JVM体系结构:
- 类加载器(ClassLoader):负责加载类文件,将类加载到内存中。
- 运行时数据区域:包括方法区、堆、栈、本地方法栈和程序计数器。
- 执行引擎:执行字节码指令,包括解释执行和即时编译执行(JIT)两种方式。
- 本地接口:与本地库进行交互的接口。
- 本地方法库:包含用C或C++编写的本地库,允许Java调用底层操作系统的功能。
jvm常用参数
-
堆内存参数:
-Xmx<size>
:设置Java堆的最大内存大小,例如-Xmx512m
表示最大堆内存为512MB。-Xms<size>
:设置Java堆的初始内存大小,例如-Xms256m
表示初始堆内存为256MB。
-
垃圾回收参数:
-XX:+UseParallelGC
:使用并行垃圾回收器。-XX:+UseConcMarkSweepGC
:使用CMS(Concurrent Mark-Sweep)垃圾回收器。-XX:+UseG1GC
:使用G1(Garbage-First)垃圾回收器。-XX:+UseSerialGC
:使用串行垃圾回收器。
-
栈参数:
-Xss<size>
:设置线程栈的大小,例如-Xss256k
表示每个线程的栈大小为256KB。
-
性能调优参数:
-XX:MaxPermSize=<size>
:设置永久代的最大内存大小。-XX:MaxMetaspaceSize=<size>
:设置元空间的最大内存大小。
-
类加载参数:
-XX:+TraceClassLoading
:跟踪类的加载。-XX:+TraceClassUnloading
:跟踪类的卸载。
-
调试参数:
-Xdebug
:启用调试模式。-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<address>
:启用JDWP调试协议,允许远程调试。
-
监控参数:
-XX:+PrintGC
:打印垃圾回收信息。-XX:+PrintGCDetails
:打印详细的垃圾回收信息。-XX:+PrintHeapAtGC
:在每次垃圾回收后打印堆信息。-XX:HeapDumpOnOutOfMemoryError
:当发生内存溢出错误时生成堆转储文件。
-
性能分析参数:
-Xprof
:启用性能分析。-Xrunhprof:cpu=samples,file=<filename>
:生成CPU分析数据。