温州Java培训班
温州Java培训班
- 上课时段:见详情
- 教学点:1个
- 开班时间:随到随学
- 课程价格:请咨询
- 已关注:963
- 优惠价格:请咨询
- 咨询电话: 400-008-6280
温州Java培训相关资料:
java培训班JVM原理分析及性能调优
一.Javac
1.Javac编译器的作用
将符合Java语言规范的源代码转化成符合Java虚拟机规范的Java字节码。
2.编译器主要的几个处理阶段
词法分析、语法分析、语义分析和代码生成,基于访问者模式来遍历语法树的过程。
二.ClassLoader
将Class加载到JVM中,审查每个类应该由谁加载,将Class字节码重新解析成JVM统一要求的对象格式。
1.ClassLoader等级加载机制
(1)Bootstrap ClassLoader,主要加载JVM自身工作需要的类,这个ClassLoader完全是JVM自己控制的,没有更高一级的父加载器,也没有子加载器。
(2)ExtClassLoader,它服务的特定目标在System.getProperty("java.ext.dirs")目录下。
(3)AppClassLoader,它的父类是ExtClassLoader。所有在System.getProperty("java.class.path")目录下的类都可以被这个类加载器加载。
扩展类加载器,通常是继承URLClassLoader类或是其他子类,它的父加载器都是AppClassLoader,因为不管调用哪个父类构造器,创建的对象都必须最终调用getSystemClassLoader()作为父加载器获得AppClassLoader。
2.加载class文件
(1)找到.class文件并把这个文件包含的字节码加载到内存中,通过ClassLoader类findClass()方法来实现。
(2)又可分为三个步骤,分别是字节码验证、Class类数据结构分析及相应的内存分配和最后的符号表的链接。
(3)类中静态属性和初始化赋值,以及静态块的执行等。
3.显示加载一个类的方式
(1)通过类Class中的forName()方法。
(2)通过类ClassLoader中的loadClass()方法。
(3)通过类ClassLoader中的findSystemClass()。
4.什么情况下实现自己的ClassLoader
(1)在自定义路径下查找自定义的class类文件。
(2)保证通过网络传输的类的安全性,可以将类经过加密后再传输,在加载到JVM之前需要对类的字节码再解密。
(3)如果我们可以检查已经加载的class文件是否被修改,如果修改了,可以重新加载这个类,从而实现类的热部署。
三.JVM
1.体系结构
(1)类加载器,在JVM启动时或者在类运行时将需要的class加载到JVM中。
(2)执行引擎,任务是负责执行class文件中包含的字节码指令,相当于实际机器上的CPU。
(3)内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者PC指针的记录器等。
(4)本地方法调用,调用C或C++实现的本地方法代码返回结果。
2.类加载器
每一个被JVM装载的类型都有一个对应的java.lang.Class类的实例来表示该类型。
3.执行引擎
执行引擎是JVM的核心部分,执行引擎的作用就是解析JVM字节码指令,得到执行结果。执行引擎具体采取什么方式由JVM的实现厂家自己去实现。
(1)直接解释执行。
(2)采用JIT技术,将字节码转成本地代码去执行。如JVM在执行程序时会记录某个方法的执行次数,如果次数到一个阀值就会编译这个方法为本地代码。
(3)基于栈的架构,实现JVM跨平台,更好地优化代码和指令的紧凑性。如SUN的hotspot是基于栈的执行引擎。
(4)基于寄存器的架构,性能较好,但无法跨平台,因为在没有或者很少的寄存器的机器上也要同样能正确地执行Java代码。如Google的Android平台上的Dalvik VM就是基于特定芯片(ARM)设计的基于寄存器的架构。
4.内存管理
(1)PC寄存器,用于保存当前正常执行的程序的内存地址。
(2)本地方法栈,为JVM运行Native方法准备的空间,很多Native方法都是用C语言实现的,所有它通常又叫C栈。
(3)Java栈,当创建一个线程时,JVM就会为这个线程创建一个对应的Java栈,这个Java栈中又会含有多个栈帧,一个栈帧对应一个方法和方法内的变量,返回值等信息。
(4)Java堆,存储Java对象的地方,它是JVM管理Java对象的核心存储区域,被所有Java线程所共享。
(5)方法区,用于存储类结构信息,包括:常量池、域、方法数据、方法体、构造函数、实例初始化、接口初始化都存储在这个区域。属于Java堆中的永久区。
(6)常量池,包括:编译期的数字常量、方法或者域的引用。属于方法区的一部分。
5.内存分配策略
(1)静态内存分配
(2)栈内存分配
(3)堆内存分配
6.内存回收策略
(1)静态内存分配和回收,Java被编译时就已经能够确定需要的内存空间,当程序被加载时系统把内存一次性分配给它。如局部变量包括数据原生类型(long等占用8个字节)和对象的引用(Object对象类型引用会占用4个字节空间)。
(2)动态内存分配和回收,Java中对象的内存空间是动态分配的,所谓的动态分配就是在程序执行时才知道要分配的存储空间大小。
(3)基于分代的垃圾收集方式,把对象按照寿命长短来分组,分为年轻代和年老代,新创建的对象被分在年轻代,如果对象经过几次回收后仍然存活,那么再把这个对象划分到年老代。年老代的收集频度不像年轻代那么频繁。
四、JVM调优
1.设置虚拟内存(堆大小,及年轻代年老代比例)
2.选择垃圾收集器(根据实际情况,jdk5以后根据配置自动选择)
2.逻辑集群解决内存问题(根据实际情况)解决过大堆内存full gc的卡顿
3.开启server模式(默认client,jdk5以后根据配置自动选择)
为什么Java编程语言-屹立不倒?
Java编程的实用性、简单性、安全性使其在众多语言中始终位列首位
5G时代-Java高端人才炙手可热
信息化发展时代,Java程序员职业道路选择宽广,前景广阔,上升空间大
Java程序员待遇高 ¥ 21350 /月 | Java程序员人才需求大 日招聘量74492个 |
阶段性Java课程学习-练就扎实功底
Java 企业级应用9大课程优势,培养学员全栈技术能力
课程模块 计算机概述Java基础面向对象实战 核心技能学习 • 了解计算机概述、掌握Linux Eclipse开发环境搭建 • 掌握变量/基本数据类型/运算符/流程控制/数组 • 掌握对象/类/属性/方法/构造器/重载/继承/重写/封装多态/抽象类和接口 | |
课程模块 项目需求概述Java SE核心APIJava 8 高级API高性能服务器开发实战 核心技能学习 • 熟悉项目需求文档 • 掌握Object、String、StringBuilder、正则表达式、集合框架、包装类、二进制 • 掌握文件、IO,线程,网络,XML、Lambda、流、反射API、日期、并发包 • 掌握HTTP协议解析、TCP并发编程、线程池、POST、GET、数据库原型实战 | |
课程模块 WEB前端核心WEB前端高级框架前端项目实战数据库核心Java EE服务端编程阶段项目实战 核心技能学习 • HTML5、CSS3、JavaScript、ES6 • JQuery、Bootstrap、VUE • Smart Blog 界面开发 • MySQL、SQL、DDL、DML、DQL、DCL、JDBC、数据库连接 • 池、Druid、数据库设计 • Tomcat、Servlet、Request、Response、Cookies、Session • 、过滤器、监听器、Thymeleaf 模版引擎 • Ajax、Smart Blog | |
课程模块 SSM框架技术微服务架构阶段项目实战互联网架构实战 核心技能学习 • Spring、Spring MVC、MyBatis、MyBatisPlus、SpringBoot 、Shiro认证框架、AdminLTE • Eureka、Ribbon、Feign、Hystrix、Zuul、Config+Git • 学子商城项目实战,项目搭建、RESTful、文件上载、AOP、拦截器 • Nginx、Redis、MySQL读写分离、Kafka | |
课程模块 手写MVC框架数据库高级项目库综合实战就业进阶 核心技能学习 • Smart MVC 框架 • 索引、视图、存储过程、MySQL函数、存储过程 • CMS、旅游、电信、社交、找房 • Java 内存管理、GC原理、JVM参数调整、排序、二分查找、 • 双向循环链表、二叉树、散列表 | |
视频课程内容 数据库简介 数据库安装 客户端工具的使用 常用数据类型 dml和tcl语句 truncate和delete区别 基本的select语句 函数、集合、视图、序列、索引、约束 hibernate入门 主键生成策略 一级缓存 持久化对象及其 特性 延迟加载 lazy和fetch和inverse使用 HQL 10 缓存 |
Java大项目贯穿-驱动式教学
7大全栈式Java项目实战,无缝融合企业真实开发环境
实践+创新能力培养-成长为优秀程序员
大项目贯穿完成后,学员拥有从企业角度思考工作的思维模式和工作心态
工作继承性 在学习过程中,掌握行业java热点技术,提高对java技术点的熟练度。 | 商务开发经验 通过大项目贯穿,完成根据业务去实现系统功能,积累企业需要的java开发经验。 | 多人分工开发 java开发项目整个开发过程中分工合作,既提升团队合作能力又符合企业真实开发环境需求。 |
自主解决开发问题 通过大项目贯穿,了解项目开发全流程遇到问题自主解决,提高学习能力。 | 代码调试/运维能力 把每日每模块编写的代码集成在一起,锻炼代码调试能力,最终完成项目上线。 |
一站式就业服务-为学员就业保驾护航
23万家合作企业,累计为企业输送学员100万名
每年两次大型招聘会,单日近上百家企业为达内学员提供千余岗位直招 | 企业直接到达内人才基地现场宣讲、面试、录取,提高学员就业入职率 | 与企业签订人才培养协议,按需求定制培养软件人才,毕业即可进入名企 | 每个月不定期举办名企有约活动,名企与学员直接面对面交流 |
扫描二维码免费领取试听课程
登录51乐学网
注册51乐学网