java因其开源、高效、跨平台、生态好的特性使得它成为当前主流的编程开发语言,即使之前使用其它技术栈的公司现在也慢慢向java平台迁移。相信很多java同学在面试时都会被问到jvm调优之类的问题,但似乎感觉日常工作中又很少进行jvm调优,那对于一般的java项目到底要不要进行jvm调优呢?
在说jvm调优前,我们得先说说jvm。什么是jvm呢?jvm其实是java虚拟机(javavirtualmachine)的简称,java之所以能跨平台,其实靠的就是jvm。
jvm它是一个虚拟机,虽然jvm本身上是一个计算机程序,但它也有自己的一整套软硬件环境。
就好比你新买来了一台电脑,装好了系统后,你能正常使用电脑了。但很多用户是需要对电脑进行一些定制化设置的,比如桌面背景等。同样,jvm在安装后,即使不进行任何额外设置也能正常工作,但在某些场景下同样需要对jvm进行一些调优,而调优的手段就是更改jvm参数。
1、jvm调优的目的
jvm调优的目的就是:尽可能使用较小的内存和cpu来让java程序获得更高的吞吐量及较低的延迟。
2、jvm常见调优项
jvm最为常见的调优就是更改jvm默认的参数,比如:
初始堆大小:-xms
最大堆大小:-xmx
新生代大小:-xmn
永生代最小值:-xx:permsize
永生代最大值:-xx:maxpermsize
其实jvm默认的设置是能满足常规项目需要的,看上去jvm调优只要改改参数什么的很简单,其实并非我们所想的那么简单。
jvm调优如果调整得不好反而会影响整个项目的稳定,正常情况下不建议大家对jvm进行调优,除非你的java项目内存占用过高而你的服务器内存过低时。