杂谈01

Posted lighter-jh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杂谈01相关的知识,希望对你有一定的参考价值。

感觉好久没有写东西了,于是乎有了这么一篇水文。

 

先总结下最近的学习情况吧。

学习了下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.不知道说啥好了。。那就想到再说吧。。(编程建议有点没吸收,一回想脑子一片空白)

以上是关于杂谈01的主要内容,如果未能解决你的问题,请参考以下文章

杂谈01

Java并发系列01Thread及ThreadGroup杂谈

PyTorch杂谈01:官网demo & 视觉网络常用功能封装

鸟哥杂谈Linux环境搭建Redis

权限设计的杂谈

杂谈仿生人会梦见电子羊吗?