当前位置:首页 > 虚拟机 > 正文

jvm虚拟机参数讲解


一、如何设置JVM参数

设置Eclipsejvm参数

打开Eclipse或MyEclipse

设置->Java->InstalledJREs

选择您正在使用的JDK,然后单击“编辑”。显示如下图:

在“DefaultVArguments”输入字段中输入:-Xms512m-Xmx512m

说明:

-Xms是Java虚拟机分配的最小内存;-Xmx是最大分配内存。512m是存储空间。

一般-Xmx设置为你电脑物理内存的1/4,并将-Xms和-Xmx设置为相同的值。

其实你也可以设置该值越大越好,只要系统能够分配足够的内存即可。如果设置太大,系统会提示您这样做。


二、完整整理关于JVM—JAVA虚拟机的简介

性能优化的关键:开放的JVM


JVM是JAVA的灵魂,它实现了WORA(WriteOnce,RunAnywhere)原则,为Java代码带来了跨平台的魔力。它的应用范围超出了Java,现在支持Scala、Kotlin等更多编程语言,并作为与主机无关的执行环境兼容多种平台和操作系统。


Java的独特性


Java中的代码首先被编译成字节码,然后由JVMPerform使用。翻译。类加载器是这个过程的主角,负责加载和链接.class文件,包括加载和链接的三个阶段:加载、验证、准备和执​​行初始化方法。多线程提高了线程安全性,这可能会导致并发问题。


JVM架构细节


运行时数据区
方法区:包含类数据和方法代码(不适当时保存)。。如果管理的话,可能会发生OutOfMemoryError。
堆区:这是对象和实例变量的存储位置。虽然是所有线程共享的,但是它不是线程安全的,很容易引发StackOverflowError。
栈区:线程私有,保存局部变量和方法调用,执行效率较高,但必须小心StackOverflowError。
程序计数器:每个线程都有一个独立的程序计数器,记录当前指令地址。
原生方法栈:存在是为了支持原生方法,并为每个新线程单独分配。
执行引擎:这里将字节码转换为机器码,解释器逐行执行,JIT编译器提供性能优化的可能性。
垃圾收集器:自动从堆内存中清理过时的对象,包括串行GC和并行GC的标记扫描策略。例如,G1GC适合优化多线程大堆应用程序。

交互和赋值


通过JNI,Java代码和非Java代码(例如C/C++)可以使用默认关键字和brary()加载本地库。常见的JVM问题包括ClassNotFoundExcecption、NoClassDefFoundError、OutOfMemoryError和StackOverflowError,这些都是开发过程中应密切关注的警告信号。


要深入了解JVM的世界,关键是掌握从基础知识到源码分析和高级应用的一切。JVM入门指南、深入源码分析、高级技术和练习等一系列相关书籍和主题将帮助您成为JVM高手。