## 杂谈
昨天在B站上看了一集JVM的视频,感觉那个老师讲的还不错。但是一直在纠结要不要报一个培训班学习。昨天忍住了,主要是现在视频资料满天飞,而且自己吃过培训机构的亏吧,而且那个那边的老师都打电话催我报名一样感觉有些浮躁,每次点击扫码支付的时候又忍住了。
言归正转。首先的话JVM应该可以说是JAVA这们语言的核心吧,问过很多大佬,都说学习JAVA如果想提升自己的,就必须对JVM了解很清楚,况且国内一线互联网公司阿里的招聘要求上面也写了熟悉JVM。
jvm是Java的虚拟机,内存分为如下几个模块:
线程私有:虚拟机栈,本地方法栈,程序计数,
线程共享:Java堆,方法区
当一个类中写了一个main方法和add方法时,在栈中会分配以上内存,一个方法对应一个栈帧(先进后出),其中又包括,局部变量表,操作数栈,方法出口,动态连接。
Java堆中:可分新生代,老年代,新生代中可分Eden区和From to区。新生代中Eden区内存写满的会执行一次MinorGC,from to区轮流交换,每个对象移动一次就会age+1,最后流到老年代,老年代中内存写满会促发fullGC,促发一次会执行STW,使得程序停止。性能调优的主要是保证减少FullGC次数。
以上是所学习的,还有些不完善,后续还要多补补周志明的《深入理解JVM虚拟机》。