java堆内存分为新一代和老一代。新一代主要使用复制和标记清除垃圾收集算法;旧一代主要使用标记清除垃圾收集算法。因此,java虚拟化为新一代和老一代提供了多种不同的垃圾收集器
java以其开源、高效、跨平台和良好的生态性成为主流编程语言。即使是以前使用其他技术栈的公司,现在也在慢慢地向java平台迁移。我相信很多java学生在面试时都会被问到关于jvm调优的问题,但是他们似乎很少在日常工作中进行jvm调优。您想为一般java项目进行jvm调优吗?
在我们讨论jvm调优之前,让我们先讨论一下jvm。什么是jvm?实际上,jvm是java虚拟机的缩写。java能够跨平台的原因实际上是基于jvm。
尽管jvm本身是一个计算机程序,但它也有自己的一套软件和硬件环境。
就像你买了一台新电脑。系统安装后,您可以正常使用计算机。但是很多用户需要自定义电脑,比如桌面背景。同样,jvm安装后,即使没有任何额外的设置,也可以正常工作,但在某些情况下,还需要对jvm进行调优,而调优的手段就是更改jvm参数。
jvm调优的目的是使用尽可能少的内存和cpu,使java程序获得更高的吞吐量和更低的延迟。
2.jvm常用调优项
jvm最常用的调优是更改jvm的默认参数,例如:
最大堆大小:-xmx
新生成大小:-xmn
不朽生成的最小值:-xx:permsize
不朽生成的最大值:-xx:maxpermsize
事实上,jvm的默认设置可以满足一般项目的需要。似乎只要您更改参数,jvm的调优就非常简单,但不是我,而是您认为的那么简单。
如果jvm调优不好,会影响整个项目的稳定性。在正常情况下,不建议调优jvm,除非java项目内存太高,服务器内存太低。