自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 String到底是值传递还是引用传递?

参考博客地址:https://blog.csdn.net/u010469514/article/details/80838678java在方法传递参数时,是将变量复制一份,然后传入方法体去执行。总体把握上边这句话就可以了对于基本类型数据,是值传递的,因为方法中的基本类型数据值是直接保存在方法对应的栈帧中的局部变量表中的,所以在方法参数传递时,变量的复制就是把基本数据值复制了一份传入了方法。虚拟机分配给num一个内存地址,并且存了一个值0.虚拟机复制了一个num,我们叫他num’,num’和

2020-10-25 14:33:50 1146

原创 Markdown简单语法小结

标题:# 加 空格, 几个#号代表几级标题粗体:两个号 加 内容 加 两个星号斜体 : 一个号 加内容 加 一个星号斜体加粗: 三个号 加内容 加 三个星号删除标记:两个减号 加 内容 加 两个减号引用:>号 加 空格分割线:三个减号—或者三个星号**超链接:一个方括号[] 加 一个圆括号()有序列表:1. 加 空格无序列表:减号- 加 空格代码块:三个 ` 加上语言 , 结束再用三个 点public static

2020-10-24 19:53:11 137

原创 JVM15_new String、StringTable的垃圾回收行为、G1的String去重操作

new String()到底创建了几个对象

2020-10-22 22:38:03 473

原创 JVM14_String的不可变性、内存分配、字符串拼接与append()、inter()、一道面试题??

String基本特性首先,String类是一个final类,所以是不可继承的,因为String类对字符串的刻画已经很完备了再一点,实现了Serializable接口,也就是String方式传输数据是可以实现跨进程的,因为已经是实现了序列化的机制实现了Comparable接口,所以String天生就可以进行排序从JDK1.9开始,String的底层实现不再是char[] 数组,而是变成了byte[]数组String存储结构的变更JDK8及之前,String实现是char[]数组,也就是每一

2020-10-22 20:17:51 195

原创 JVM13_执行引擎

直接内存从JDK8开始,出现了元空间,把方法区直接移到了直接内存中,回顾IO和NIOIO是阻塞式的,NIO(Non-blocking IO)非阻塞式IO是通过字节数组byte[]和字符数组char[]实现的stream流而NIO是通过Buffer实现的,使用Channel通道如果要操作直接内存,使用NIO的方式通过ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER);来分配固定大小的直接内存使用IO的方式使用NIO的方式

2020-10-20 21:28:59 131

原创 JVM11_方法区、内存泄露和内存溢出

方法区、栈、堆三者的关系方法区如果保存了过多的类就会导致OOM比如1、加载了大量的第三方jar包2、tomcat服务器部署了过多工程(30-50个)3、大量动态生成反射类hotspot方法区的演进如果方法区是接口,那么永久代或者元空间就是方法区的具体实现,只是JDK8中把永久代换成了元空间元空间使用的是本地内存,而不是虚拟机内存在hotspot中,可以认为方法区和永久代是等价的,因为hotspot对方法区的实现就是使用的永久代。其他的虚拟机就没有永久代方法区参数设置jdk.

2020-10-19 15:49:56 609

原创 JVM12_StringTable、对象的实例化、对象的内存布局 、对象访问的两种方式、对象头信息

字符串常量池为什么要调整,从永久代放到对空间?其实就是因为字符串常量池在永久代中,回收效率不高,而开发中会产生大量的字符串,这样就会导致永久代内存不足。放在堆中,能及时回收内存静态变量首先,new出来的东西没有疑问,都是放到对空间中的,JDK中静态变量的变化,只是指的静态变量的引用存放的位置,JDK6是在永久代,JDK7和8放到了堆空间中jhsdb.exe是在JDK9时才出现的,监控进程的工具静态变量和映射的Class对象都放在了堆中方法区的垃圾回收行为对于方法区的回收行为,记住两点:

2020-10-19 15:49:27 149 1

原创 JVM10_堆空间之新生代老年代、内存分配过程、Minor GC(Young GC)、Major GC、Full GC、TLAB、逃逸分析

要想设置新生代中的比例,必须显式指定SurvivorRatio, 只是关闭自适应分配策略不管用对象内存分配过程图解自我总结过程:首先new的对象会放在Eden区,当Eden区满了以后会触发YoungGC(Minor GC),此时会把没有被GC的对象放到S0或者S1区,假设此时就是放到了S0区。当对象被放到S区开始,就会为这些对象分配一个age年龄计数器(当到了一定年龄对象就会被放到老年区)当Eden区再一次满了,又触发YGC,幸存的对象会被放到S1区,而之前S0区没有被YGC的...

2020-10-16 16:23:08 487

原创 JVM09_本地方法接口、本地方法栈、堆的介绍及内存分配、IDEA设置编译时环境和运行时环境

本地方法使用native修饰的方法是本地方法,不能和abstract放在一起。因为native的意思是调用本地方法,非java的方法,虽然看起来没有方法体,但是存在方法实现而abstract是指抽象方法,是java层面的,它修饰的方法不能有方法体,必须由它的子类重写本地方法栈堆一个JVM实例就是一个进程,运行一个java程序,也就是把编译产生的class文件放到JVM实例中执行,一个JVM实例就对应一个进程。一个JVM实例中只会存在一个堆空间和方法区,所以是线程共享的在堆中并

2020-10-14 20:26:50 184

原创 JVM08_方法的重写、栈帧之方法返回地址和一些附加信息、一些面试题

虚方法表上例中,因为存在虚方法表,所以对于toString()\hashCode()这种方法,就不会再去Son的父类向上找,直接找的就是虚方法表中的方法入口,加快执行效率方法返回地址存储的就是调用该方法的指令的下一条指令地址,也就是下一个方法或者栈帧。这样返回给调用者的PC寄存器,就知道下一条该执行那个指令了方法执行后,退出方法的两种情况:1、正常完成出口 return2、出现异常,会在异常处理表中找对应的处理异常的代码。如果异常表中没有异常处理器,就会导致方法退出这种是异常完成出.

2020-10-11 20:40:57 209

原创 JVM07_栈帧之动态链接,方法的调用、动态语言类型和静态语言

对于帧帧中的其他三部分:方法返回地址、动态链接和一些附加信息,可以统称为帧数据区动态链接java源文件被编译成class字节码文件的时候,会把所有变量和方法的引用作为符号引用保存到class文件的常量池中如下图Constant pool, # 加数字就是符号引用。也就是把当前class文件需要的资源都做了符号引用。使用时就使用符号引用。每一个栈帧中都存在一个动态链接,存的就是指向常量池的引用所以动态链接也叫:指向运行时常量池的方法引用class文件中的常量池,在class运行起来后

2020-10-11 17:31:43 481

原创 JVM06_栈帧之操作数栈

操作数栈操作数栈和局部变量表都是用的数组结构,数组一旦创建,那么长度就固定了。但是操作数栈不会采用访问索引方式进行数据访问代码追踪bipush:byte、short、char、boolean都是以int型来保存,bi代表int型局部变量表和操作数栈都是基于数组的栈实现的第一步:bipush是把byte类型转换成int进行保存PC寄存器中就是保存的指令地址,bipush把15压入操作数栈,int占两个字节,所以下一个指令从2开始istore_1:表示把int类型的值从操作数栈取出

2020-10-11 15:17:46 249

原创 JPG和TIFF图像转换

直接使用最简单的方式:下载ACDSee来进行批量转换下载安装后需要邮箱验证注册使用步骤1、选择要转换的路径下的图片(可以Ctrl + A全选)2、选择批量 —》 转换文件格式可以实现jpg和tiff格式图片的相互转换,这里我是要把tif格式转jpg3、选择jpg后选择下一步,修改转换后的文件保存位置4、继续下一步,开始转换...

2020-10-09 22:12:47 3656

原创 JVM05_虚拟机栈(java栈)之 栈帧,局部变量表

是什么栈的特点栈帧是虚拟机栈中的基本单位,一个栈帧对应一个方法,比如上边,methodA执行,出现一个栈帧,接着methodA中调用了methodB,压入了另一个栈帧,栈顶的栈帧表示当前方法。方法B执行完以后就弹出栈,那么方法A就成了当前方法。栈只存在OOM,不存在GC面试题开发中遇到哪些异常演示栈溢出通过 -Xss256k设置虚拟机栈的大小2、栈的存储单位方法和栈帧是一对一关系:方法执行,那么对应栈帧入栈,方法执行结束对应栈帧出栈栈运行原理抛出异常指的是...

2020-10-07 23:17:22 254

原创 JVM01_简介

文档下载https://docs.oracle.com/javase/specs/index.html两个文档:语言规范和虚拟机规范参考书周志明老师的书推荐JVM:跨语言的平台。java:跨平台的语言JVM不仅可以解释java程序,其他编程语言也可以解释,只需要不同语言提供各自的编译器,编译出的字节码文件遵循JVM的规范,就可以运行从JDK11开始,每次都会发布两个版本的JDK:一个OpenJDK、一个OracleJDKOpenJDK支持期只有半年,半年以后如果发现JDK存在.

2020-10-05 09:25:11 246

ACDSee用于图片格式转换

可用于多种图片格式的批量转换,方便快捷

2020-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除