摘要:
1. 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内 阅读全文
摘要:
1.JMM内存模型 JMM结构规范 JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝。 线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主 阅读全文
摘要:
1.线程的中断(interrupt) public void interrupt() //t.interrupt() 打断t线程(设置t线程某给标志位f=true,并不是打断线程的运行) public boolean isInterrupted() //t.isInterrupted() 查询打断标 阅读全文
摘要:
1. 线程的6种状态 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2.运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态 阅读全文
摘要:
1.什么是G1 G1是一种服务端应用使用的垃圾收集器,目标是用在多核、大内存的机器上,它在大多数情况下可以实现指定的GC暂停时间,同时还能保持较高的吞吐量 参考链接:https://www.oracle.com/technical-resources/articles/java/g1gc.html 阅读全文
摘要:
1.PS GC日志详解 total = eden + 1个survivor eden space 5632K, 94% used [0x00000000ff980000,0x00000000ffeb3e28,0x00000000fff00000) 后面的内存地址指的是,起始地址,使用空间结束地址,整 阅读全文
摘要:
1.了解JVM常用命令行参数 HotSpot参数分类 标准: - 开头,所有的HotSpot都支持 非标准:-X 开头,特定版本HotSpot支持特定命令 不稳定:-XX 开头,下个版本可能取消 java -XX:+PrintFlagsFinal | grep xxx 找到对应的参数 java -X 阅读全文
摘要:
1.什么是三色标记 黑色:自身和成员变量均已标记完成 灰色:自身被标记完成,成员变量未被标记 白色:未被标记的对象(垃圾) 2.漏标 什么是漏标:将原来存活的对象,但是由于没有遍历到当作垃圾回收了 产生漏标的原因:1、黑色对象指向了白色对象;2、灰色对象取消了对白色对象的引用。就会产生白色对象被漏标 阅读全文
摘要:
1.GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间 -XX:+UseTLAB 使用TLAB,默认打开 -XX:+PrintTLAB 打印TLAB的使用情况 -XX:TLABSize 设置TLAB大小 -XX:+DisableExplictGC System.gc 阅读全文
摘要:
1.什么是CMS CMS主要设计目标:低停顿时间 CMS全称ConcurrentMarkSweep,作用于老年代,并发标记清除,并发是指垃圾回收和应用程序同时运行,这样的目的是为了降低STW的时间(200ms) CMS垃圾回收器基于标记-清除算法实现,那么使用该算法的最大缺点也显而易见——大量的内存 阅读全文