jvm讲解及调优
jvm与并发编程先学哪个比较好?
jvm与并发编程先学哪个比较好?
个人感觉没有啥先后顺序,不过先学jvm你能读明白字节码,一些多线程的例子反编译过来看字节码能明白一些事,比如监视器怎么加的。或者你知道了jvm内存几个区域,有的地方不涉及到共享问题,也不会线程不安全。多线程可以看看java高并发程序设计这本书。jvm可以看看深入java虚拟机这本书。有条件的话,经常用生产上的机器解决一些问题,比如内存满了用jmap和mat分析,这样能加强你对jvm熟悉,同时也可以对生产环境进行jvm调优。如果出现应用卡死,可能有死锁,大事物,死循环这样的,你可以用jstack和jstat去分析线程栈,会学到一些多线程的知识。同时你可以用gceasy这个在线工具把你的堆栈上传上去,有个可视化的分析。另外阿里的arthas是个调试神器,jprofiler可以可视化很多东西。xxfox也是个在线学习jvm的好网站。
如果你愿意的话,当你想深入线程的话,可以看看posix线程规范pthread和linux内核的一些知识,能加强你对java线程的理解以及java内存分配的理解。
除了书,推荐你极客时间的java并发编程实战,深入拆解jvm虚拟机。如果你还想对jvm再深入的话,可以看看openjdk源码,需要有c的底子,还有自己动手写java虚拟机这本书。
如何提升网站的打开速度?
关于这个问题,可以从服务端/网站建设方和客户端/用户方两个方面考虑:
服务端/网站建设方如果您是网站的建设方,可以考虑但不局限于:
1、选择实力强的互联网服务提供商,选用高带宽、高可靠的服务器部署服务端程序,如云服务器,具备负载均衡等能力。
2、服务器端动静分离,使用静态文件生成技术,静态资源采用CDN加速。
3、使用高速缓存,提高加载速度。
客户端/网站用户1、选择在网速快、非人员密集的地方上网,能用有线上网最好。
2、选用处理器能力强、内存/缓存大的电脑或手机。
3、及时清理浏览器缓存等文件,电脑、手机运行太长时间,产生垃圾文件多,处理器和内存消耗殆尽,会导致网页打开变慢。