lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

随笔分类 -  java底层

JVM,GC
摘要:简介:请允许我当一回标题党。好了,言归正传,本篇主要内容便是介绍HashMap的男二号——TreeNode(男一号还是给Node吧,毕竟是TreeNode的爷爷,而且普通节点一般来说也比TreeNode要多),本篇主要从以下几个方面介绍:1. ... 简介:请允许我当一回标题党。好了,言归正传,本篇 阅读全文
posted @ 2019-03-21 14:41 白露~ 阅读(2297) 评论(1) 推荐(0) 编辑

摘要:一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2019-03-20 12:05 白露~ 阅读(391) 评论(0) 推荐(0) 编辑

摘要:本篇继续学习AQS中的另外一个内容-Condition。想必学过java的都知道Object.wait和Object.notify,同时也应该知晓这两个方法的使用离不开synchronized关键字。 synchronized是jvm级别提供的同步原语,它的实现机制隐藏在jvm实现中。作为Lock系 阅读全文
posted @ 2019-03-20 12:04 白露~ 阅读(867) 评论(0) 推荐(0) 编辑

摘要:1.volatile最适用一个线程写,多个线程读的场合。 如果有多个线程并发写操作,仍然需要使用锁或者线程安全的容器或者原子变量来代替。(摘自Netty权威指南) 疑问:如果只是赋值的原子操作,是否可以多个线程写?(答案:可以,但是一般没有这样的必要,即没有这样的应用场景) 最经典的使用案例: vo 阅读全文
posted @ 2019-03-20 00:34 白露~ 阅读(287) 评论(0) 推荐(0) 编辑

摘要:volatile的适用场景 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。 原子性意味着个时刻,只有一个线程能够执行一段代码,这段代码通过一个monitor object保护。从而防止多个线程在更新共享状 阅读全文
posted @ 2019-03-20 00:25 白露~ 阅读(290) 评论(0) 推荐(0) 编辑

摘要:相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限。 先来看下面的示例来验证下 i++ 到底是不是线程安全的。 1000个线程,每个线程对共享变量 count 进行 1000 阅读全文
posted @ 2019-03-19 23:39 白露~ 阅读(696) 评论(0) 推荐(1) 编辑

摘要:AtomicInteger这个类的存在是为了满足在高并发的情况下,原生的整形数值自增线程不安全的问题。比如说 int i = 0 ; i++; 上面的写法是线程不安全的。 有的人可能会说了,可以使用synchronized关键字啊。 但是这里笔者要说的是,使用了synchronized去做同步的话系 阅读全文
posted @ 2019-03-19 23:35 白露~ 阅读(558) 评论(0) 推荐(0) 编辑

摘要:并发编程 并发程序要正确地执行,必须要保证其具备原子性、可见性以及有序性;只要有一个没有被保证,就有可能会导致程序运行不正确 线程不安全在编译、测试甚至上线使用时,并不一定能发现,因为受到当时的CPU调度顺序,线程个数、指令重排的影响,偶然触发 线程安全的定义 比如说一个类,不论通过怎样的调度执行顺 阅读全文
posted @ 2019-03-19 23:27 白露~ 阅读(518) 评论(0) 推荐(0) 编辑

摘要:转载请注明本文地址:https://www.jianshu.com/p/f00aa6f66281 源码地址:https://gitee.com/sunnymore/asyncToSync Sunny先来说一下对异步和同步的理解: 同步调用:调用方在调用过程中,持续等待返回结果。 异步调用:调用方在调 阅读全文
posted @ 2019-03-19 21:56 白露~ 阅读(1388) 评论(0) 推荐(0) 编辑

摘要:synchronized同步方法和同步代码块的区别 同步方法默认使用this或者当前类做为锁。 同步代码块可以选择以什么来加锁,比同步方法更精确,我们可以选择只有会在同步发生同步问题的代码加锁,而并不是整个方法。 同步方法使用synchronized修饰,而同步代码块使用synchronized(t 阅读全文
posted @ 2019-03-19 21:34 白露~ 阅读(7464) 评论(1) 推荐(0) 编辑

摘要:一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中 阅读全文
posted @ 2019-03-19 19:34 白露~ 阅读(895) 评论(0) 推荐(0) 编辑

摘要:cglib的知识点总结 cglib的底层技术:底层采用asm字节码生成框架生成代理类的字节码 2.cglib实现代理需要用到的API:实现MethodInterceptor接口,利用Enhancer类生成代理类的对象 3.cglib实现代理的原理-Enhancer类如何生成代理类对象:生成代理类Cl 阅读全文
posted @ 2019-03-19 19:31 白露~ 阅读(882) 评论(0) 推荐(0) 编辑

摘要:usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=300M -XX:Survivor 阅读全文
posted @ 2019-03-19 15:54 白露~ 阅读(3458) 评论(0) 推荐(0) 编辑

摘要:Java 应用性能优化是一个老生常谈的话题,笔者根据个人经验,将 Java 性能优化分为 4 个层级:应用层、数据库层、框架层、JVM 层。通过介绍 Java 性能诊断工具和思路,给出搜狗商业平台的性能优化案例以供参考。 Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超 阅读全文
posted @ 2019-03-19 13:40 白露~ 阅读(319) 评论(0) 推荐(0) 编辑

摘要:一、为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话, 阅读全文
posted @ 2018-05-22 11:07 白露~ 阅读(2934) 评论(0) 推荐(0) 编辑

摘要:学习了out of memory 和 memory leak之间的区别以及 out of memory发生的原因,同时也很好奇 memory leak产生的原因及关注点。 依赖于引用判断的内存管理机制 Java中对内存对象的访问,使用的是引用的方式。在Java代码中我们维护一个内存对象的引用变量,通 阅读全文
posted @ 2018-05-07 10:08 白露~ 阅读(1369) 评论(0) 推荐(0) 编辑

摘要:内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可 阅读全文
posted @ 2018-05-04 14:52 白露~ 阅读(3684) 评论(0) 推荐(1) 编辑

摘要: 阅读全文
posted @ 2018-05-01 22:29 白露~ 阅读(237) 评论(0) 推荐(0) 编辑

摘要:1、垃圾回收器 垃圾回收器(又称为gc):是负责回收内存中无用的对象(好像地球人都知道),就是这些对象没有任何引用了,它就会被视为:垃圾,也就被干掉了。 2、类装载子系统 一听名字,大家就知道,肯定是用于操作我们编译好的.Class文件的系统,他作用如下: v 定位和导入二进制class文件 v 验 阅读全文
posted @ 2018-05-01 20:01 白露~ 阅读(249) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示