标签:The 垃圾回收机制 优化 0ms 提速 nbsp 啪啪啪 目的 垃圾回收
感觉好久没有写东西了,于是乎有了这么一篇水文。
先总结下最近的学习情况吧。
学习了下Java虚拟机,对虚拟机的概念更加熟悉了。
学习了下Java编程的建议,虽然还没有很好的吸收,但准备肝一波英文版(并不)。
想到啥说啥系列:
1.JVM。
①个人觉得一个程序就一个JVM,或者说一个main就是一个JVM,然后每个JVM可以设置各种区大小,什么老年代、伊甸园区、FROM,TO区、元空间、堆栈等等。。
可能具体概念并不能很好的描述出来,但是大概知道程序运行的时候每个区都有啥作用。
②JVM学习的目的 主要还是调优,毕竟如果随手写的代码,不用优化也能承受高并发,大量访问的话,就没必要去研究如何提速,提高用户体验的问题。因为如果是200ms的访问速度降到150ms的访问速度,看着降的百分比挺多,但是实际上对用户来说是几乎零感知的。不是说这样的优化没有用,而是这样的优化不是必要,而且很可能会花费很多时间去考虑调优的事情。但一般比较卡的程序可能就是3s以上的卡顿,这是一个临界值吧,再往上用户就会抱怨了(个人感觉3s已经很多了,有的说5s好像,而且3s内我也会抱怨的。。)。这种程序将卡顿降到200ms,那~完美,厉害,啪啪啪~
③实际上,写的代码总会出现一些意料之外的问题,程序的卡顿很大的原因会出在GC部分,特别是程序如果频繁fullGC的话。GC导致卡顿的主要原因就是stop the world。酷酷的名字。在我大GC要工作时,世界都要停下来。因为这个停顿,就容易反应到程序上的卡顿。GC的频繁主要就考虑(目前个人所了解)虚拟机所分配的空间是否合理,是不是老年代太小需要频繁扩张导致疯狂fullGC,或者考虑是不是有大量对象并没有被释放。
④老年代满了就fullGC,eden区满了minorGC。minorGC的代价比较小,卡顿也不会很明显。据书上说,目前的垃圾回收机制有多线程回收,而且支持边运行边回收。但是我记不太清除咯。
⑤JVM还有一部分就是*.class文件,如何编译出来的,如何理解这class文件的意思,文件头CAFEBABE(咖啡宝贝吗。。)。还有类加载器等。。类加载器部分我没有细读,只知道从父加载器干嘛干嘛。。具体忘了。。主要就是保证class文件的正确性,保证不同包的类可以同时加载而且不会混淆。
2.不知道说啥好了。。那就想到再说吧。。(编程建议有点没吸收,一回想脑子一片空白)
标签:The 垃圾回收机制 优化 0ms 提速 nbsp 啪啪啪 目的 垃圾回收
原文地址:https://www.cnblogs.com/lighter-jh/p/11584521.html