JVM那些事儿之内存区域
相信绝大多数java开发者或多或少的都应该知道jvm,但是有多少人又深入去了解过,笔者深感自身能力的不足,去看了些资料,觉得还是有必要整理下自己的学习记录,时常回头看看,多看多实践提升自己的能力,故开始进行jvm相关的知识梳理和记录,一起来学习吧 前言 从我们刚开始学习java时,我们就被告知其“一次编写,到处运行”的特点,随着学习和工作的深入,你也应该了解了构成这种特点的原因,说到这里,有点像中间件的思想,有人说过,没什么东西是不能通过添加一个中间件来完成的,如果一个不行,那就两个。 由于jvm的存在,使得java语言可以不去关注系统区别而进行同一套代码的开发,借助class字节码文件在jvm上运行,只需要jvm关注底层系统即可,有没有点像中间件的思想,将底层处理相关部分抽离出来构成jvm,而开发者无需关注底层实现,根据自己的需要进行自己的开发即可 但是同时由于jvm的存在屏蔽了许多的底层细节,方便了开发人员,但是其缺点也是很明显的,在我们需要对程序进行优化,比如内存,CPU,并发量,IO等进行必要的处理时,就有点懵逼,你是不是经历过下面的场景: 程序内存占用满了,导致程序经常宕机需要重启,不知道从哪里查问题,怎么优化? 程序偶尔莫名其妙的卡顿,代码检查了一遍又一遍,没问题,不知道接下来怎么搞了? 服务器上资源紧张,需要优化配置,怎么做? ... 其他更加离奇的现象就不列举了