- 一、什么是对象
- 二、JVM性能调优
- 1、栈
- 2、程序计数器
- 3、堆
- 4、方法区(1.8后称元空间)
- 5、本地方法栈
- 6、STW
- 7、总结
- 三、Jdk和Jre和Jvm
- 四、==与equals
- 五、final
- 六、String、StringBuffer、StringBuilder
对象由封装,继承,多态组成
- 封装:封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项内部细节对外部调用透明,外部调用无需修改或者关心内部实现
- 继承:继承基类的方法,并做出自己的改变和扩展,子类的共性的方法或者属性直接使用父类的,而不需要自己再定义,只需要扩展自己个性化的,
- 多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同,父类引用子类对象时无法调用子类特有的功能
调优参数链接
1、栈- 先进后出,方法的执行是入栈到出栈
- 每一个方法都会在栈中分配一个空间叫栈帧
- 栈帧中有局部变量表、操作数栈、动态链接、方法出口
- 创建局部变量时先分配局部变量x的内存空间后将type类型值存入局部变量x
- 动态链接是通过符号加载到方法对应的代码(方法区内存地址)
- 方法出口在调用方法时就已经设置了方法出口
- 局部变量表里放的是对象在堆的内存地址(指针)
- 用于线程挂起(线程切换)
- 由字节码执行引擎修改
- new出的对象在堆里
- 年轻代和老年代组成
- 字节码执行引擎执行垃圾收集线程
- gc收集包括可达性分析算法、
- 常类、静态变量、类信息
- 静态变量的内存空间放的也是指向堆内存的指针
- 本地方法栈分配底层中除java语言的方法,native类型
- Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互;这些现象多半是由于gc引起。
- 是在执行垃圾收集算法时,Java应用程序的其他所有线程都被挂起(除了垃圾收集帮助器之外)
- 所有线程都私有栈、程序计数器、本地方法栈,堆和方法区为共享
- 亿级电商案例避免Full GC清理新生老年代(可以调大新生代,比例)
- 高并发案例设置新生代为G1收集器并设置回收最大时间频繁Minor GC
- jdk:开发工具
- jre运行时环境
- jvm虚拟机
- ==对比的是栈中的值,基本数据类型是变量值,引用类型堆中内存对象地址
- equals默认是==比较,一般需要重写
- 修饰类:表示类不能被继承
- 修饰方法:表示该方法不能被子类覆盖,但可以重载
- 修饰变量:表示变量一旦被赋值就不可以改变它的值
- 成员变量时声明时就要进行赋值或者在静态代码中赋值
- 局部变量只声明没初始化不会报错,但在使用前一定要初始化
- 基本数据类型的变量,则其数值一旦在初始化之后便不能更改
- 引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。但是引用的值是可变的。
- 局部内部类和匿名内部类只能访问局部final变量(为了在局部销毁后,内部类仍然可以访问)
- 重载,简单说,就是函数或者方法有相同的名称,但是参数列表和返回类型不相同的情形,这样的同名不同参数或者类型的函数或者方法之间,互相称之为重载函数或者方法。



