java高级编程
文章平均质量分 60
人生迷茫
这个作者很懒,什么都没留下…
展开
-
jvm性能调优--对象的创建
1,类加载检查 当虚拟机遇到一个new指令时,首先会检查常量池中是否有这个类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化过,如果没有就先要加载、解析、初始化类 2,分配内存 1>类加载检查通过后,虚拟机就会为这个对象分配内存,分配内存的方式主要有两种指针碰撞、空闲列表,至于使用哪一种又java堆是否规整决定; 指针碰撞:这种方式适合堆规整的时候,将用过的内存整合到一边,没有的内存整合到一边,中间用分界指针,只要指针向着没用过的内存移动对象...原创 2022-03-23 11:27:55 · 123 阅读 · 0 评论 -
JVM性能调优(一)运行时内存
1,运行时内存图 2,具体区域介绍 线程私有区域:程序计数器、虚拟机栈、本地方法栈 线程共享区域:元空间、堆、直接内存 1>程序计数器:是一块很小的空间,主要用来当前多线程代码执行的位置,和下一条要执行的指令 2>虚拟机栈:在线程运行时,在执行每一个方法的时候,都会打包成一个栈帧放入Java虚拟机栈中。每一个栈帧存储了局部变量表、操作数栈、动态连接,方法出口等信息。局部变量表存储了编译器可知的各种数据类型(bo...原创 2022-03-22 16:59:02 · 1191 阅读 · 0 评论 -
java高级编程知识点合集--多线程(三)
(一)并发工具 1,fork-join框架;fork-join采用分而治之的思想,即规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解。实现了工作密取即当一个线程完成任务后会分担没有完成任务的线程的任务。当两个线程共同完成一个任务时,两个线程拿任务一个从头拿,一个从未拿 所以不会有竞争。 使用:通过实现RecursiveTask、RecursiveAtion、ForkJoinT...原创 2022-03-22 10:39:34 · 548 阅读 · 0 评论 -
java高级编程知识点合集---多线程(二)
(一)CAS(compare and swap)比较交换 1,CAS是基于冲突检测的乐观锁,CAS包括三个运算符内存地址V、期望的值A、一个新值B。基本思路:如果地址V上的值和期望的值A相等,就给地址V赋给新值B,如果不是,不做任何操作。例如:内存地址V=5,C线程拿到V后做加1运算,突然D线程把V改成了6,C线程CAS操作修改V时发现期望值A=5,V=6不相等又循环重新拿V做加1操作,直至V=A修改成功不然循环(死循环,自旋)里不断的进行CAS操作 2,CAS存在的问题 ...原创 2022-03-21 15:39:00 · 417 阅读 · 0 评论 -
java高级编程知识点合集--多线程(一)
1,核心数和并行线程数的关系:核心数:线程数=1:1;使用了超线程技术后1:2 2,CPU时间片轮转机制:多个线程分时间片段执行,会导致上下文切换 3,并发的优缺点,注意事项 优点:充分的利用CPU资源,加快响应时间,程序规模话,异步化 缺点:线程共享资源,容易导致死锁; 上下文切换消耗时间; 启用线程太多,容易卡死 4,并发编程的三要素,怎么确保多线程安全运行 确保原子性,...原创 2022-03-16 11:17:12 · 76 阅读 · 0 评论 -
java高级编程知识点合集--集合<Map>(三)
(1)hashMap的实现原理 hashMap是基于hash算法实现的,使用”拉链法“解决冲突,jdk1.8后当链表的长度大于8的时候后使用红黑树保存数据,以提高检索的效率 (2)hashMap为什么不直接使用hashcode作为table的下标呢 hashcode的值太大了,hashMap有自己的hash()方法,可以使得数据更均匀! (3)hashMap长度都是2的幂次方 (4)hashMap与hashTable的区别 1,hashTable是线程安全的,...原创 2022-03-10 17:43:30 · 134 阅读 · 0 评论 -
java高级编程知识点合集--集合<collecction>(二)
一,list接口 (1)迭代器iterator是什么 迭代器iterator提供遍历collection的接口 (2)iterator怎么使用、特点 1,使用: List<String> list = new ArrayList<>(); Iterator<String> it = list.iterator(); while(it.hasNext()){ String s = it.next(); } 2,只...原创 2022-03-10 16:37:22 · 162 阅读 · 0 评论 -
java高级编程知识点合集 -- 集合(一)
(1)集合与数组的区别 1,集合的长度可以自动扩增,而数组不可以 2,数据可以储存基本数据类型,但是集合不可以 3,数组存储的数据类型都是一样的,但是集合可以基于多态存储多种数据类型 (2)使用集合的有点 1,自动扩增 2,提供了数据结构和算法的实现,操作便捷,快速 3,降低维护成本 (3)常用的集合 1,map接口和collection是所有集合的父类接口 2,collecti...原创 2022-03-09 17:09:22 · 290 阅读 · 0 评论