首页新闻动态正文

jvm虚拟机了解及tomcat优化【黑马java培训】

更新时间:2019年07月26日 10时56分24秒 来源:黑马程序员论坛

java虚拟机的了解
    1.-x属性   java的一些基本设置
    2.-xx 用来进行调优或者debug配置   可以设置一些jvm的启动属性  +/-用来开启或者关闭  返回一个boolean值 ,  对变量赋值 menory=512M 变量值赋值

1.7和1.8jvm虚拟机的区别
    1.7及之前分为  年轻代   老年代   永久代
    1.8内存分为  年轻代   老年代     元数据区  
    去除了永久代,元数据是硬盘上面的一块空间,为将来热部署做一个准备.
    年轻代  分为  EDen区   seviours区
    老年代   old区
MAT工具对jvm内存对象进行分析
也可以使用java自带的工具 VisualVM工具在java/bin中   分析内存对象比较有用.

GC算法
    1.引用计数法
        优点: 简洁明了,效率高
        缺点: 循环引用无法确定
    2.标记清除法:
        解决了循环引用的问题
        缺点: 比较耗时间,容易导致内存碎片化
    3.标记压缩法:
        解决了内存碎片化的问题
        缺点:seviours区对象比较少,效率比较高,但是serviours对象越来越多,效率越来越低.
    4.复制算法:
        解决了压缩发的效率问题
        缺点:内存占用比较大,只能使用一般
    5.分代算法:
        每一个算法都有都有自己的优缺点.不能说哪一种算法好,哪一种算法差.所以在不同的分代中,使用最适合自己的算法.

1.8之前默认使用的是CMS垃圾回收器. Current Memory System
1.9默认使用的是G1垃圾回收器. 对内存进行了重新滑分,不设置标准的分区,而是把内存化成很多块,
每一块都可能是任何区,取消了物理划分,改动了逻辑划分,增加了一个大对象的保存区域.

垃圾回收的方式:
    1.GC(cms,G1)        回收年轻代.
    2.MixGC(G1)         回收年轻代和部分老年代,只有G1有
    3.Full GC(cms,G1)   回收所有的年轻代和老年代.

可视化GC日志分析工具
GCEasy    百度就可以了

串行垃圾回收器
会把所有的线程全部暂停,只执行GC,保证GC的对象是没有问题的.   CMS垃圾回收器
并行垃圾回收器
不会全部暂停,程序继续运行,同时运行GC,但是对象可能会有问题,所以步骤会比较多,会有两次标记    G1垃圾回收器


tomcat的管理界面.
其实就是猫的那个界面,里面有一个manager按钮,去登陆就好.
但是我们需要配置登录的用户名,在conf/tomcat-users.xml中,去配置登录tomcat管理者的用户角色和权限.
其中可以查看到jvm的内存运行情况,tomcat中每一个web应用的工作情况.

tomcat的优化
分为两个大类: 一种是对tomcat本身的优化   一种是对jvm参数调优
    tomcat本身优化的三种方式
        1.禁用AJP(Apache JServer Protocol)
        WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,
        WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接。
        但是这种情况是有使用apache服务器才支持这个协议,但是我们常用的是ngnix+tomcat,所以AJP无法使用,
        既然无法使用,还需要消耗大量的资源维护他,肯定是很不合算的,所以一般直接禁用,
        修改conf/server.xml中,把端口配置给注释掉即可

        2.添加执行器(线程池)
        在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能.
        tomcat的运行模式有3种:

        3.切换IO的执行模式,tomcat8中推荐使用nio2
        1. bio
        默认的模式,性能非常低下,没有经过任何优化处理和支持.
        2. nio
        nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。
        Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,
        因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
        3. apr
        安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.
        推荐使用nio,不过,在tomcat8中有最新的nio2,速度更快,建议使用nio2.

    对jvm优化
        1.控制jvm占用的内存大小
        2.设置使用G1的垃圾收集器  java9默认是G1

对自身代码的优化:
    让自己写出代码执行效率更高的代码


推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!