A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 大蓝鲸小蟀锅 于 2020-2-25 12:59 编辑

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

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


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马