摘要:
Class文件 javac Class文件是一组以8进制为基础的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,中间没有添加任何分隔符,整个class文件存储的内容几乎全是程序运行的必要数据,没有空隙存在。 当遇到8位字节以上的空间的数据项,则会按照高位在前的方式分割成若干个8位字节 阅读全文
摘要:
虚拟机工具 jps java process status 本地虚拟机唯一id lvmid local virtual machine id 连续执行3次,jps显示 jps -l 显示进程所执行的主类或者jar文件 jps -m 显示所运行的主类所接受的参数 program arguments a 阅读全文
摘要:
内存分配 原则: 优先分配到eden 大对象直接分配到老年代 长期存活的对象分配到老年代 空间分配担保 动态对象年龄判断 验证优先分配到eden 验证空间分配担保 VM arguments: -verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGC -Xms2 阅读全文
摘要:
垃圾回收 如何判定对象为垃圾对象? 引用计数法 可达性分析法 如何回收? 回收的策略 标记-清除算法 复制算法 标记-整理算法 分代收集算法 垃圾回收器 serial Parnew Cms G1 何时回收? 引用计数法 在对象中添加引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,当引用 阅读全文
摘要:
java虚拟机内存管理 每个线程就是一个顺序的执行单元,线程共享区即多个线程共享同一块区域,线程独占区即每个线程都有自己的虚拟机栈,本地方法栈,程序计数器。 程序计数器是一个比较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,位于线程独占区,如果线程执行的是java方法,这个计数器记录的 阅读全文
摘要:
jdk ,jre 和 jvm的关系 内存溢出问题的分析 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 通过Memory Analyzer分析 Shallow Heap 对象本身所占用的内存大小,不包含引用 阅读全文
摘要:
MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced MessageQueue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛 应用场景1、任务异步处理。将不需要同步 阅读全文
摘要:
Lock接口中有lockInterruptibly方法(线程中断),tryLock方法(获取锁成功返回成功,获取锁失败返回失败),还有就是锁的公平性问题,还有就是提供读写性能的ReadWriteLock等等。 Lock需要显示地获取和释放锁,繁琐,能让代码更加灵活 Synchronized不需要显示 阅读全文
摘要:
volatileche称为轻量级锁,被volatile修饰的变量,在线程之间是可见的。可见:一个线程修改了这个变量的值,在另一个线程中能够读到这个修改后的值synchronized除了线程之间互斥,还有一个非常大的作用,就是保证可见性 10最终结果为:10 volatile的底层是怎样实现的? 我们 阅读全文
摘要:
重入锁 重入锁 能够让线程进行重入的锁叫作重入锁锁重入 让线程进行重入的过程叫作锁的重入 锁是当前类的实例,当进入a方法的时候,线程必须先拿到当前类的实例(锁),这个时候,a的方法内同时调用了b方法,b方法也是用synchronized来修饰的,所以b方法也需要线程获取锁才能让线程进来 进入a方法的 阅读全文