JVM
heguangwen8
这个作者很懒,什么都没留下…
展开
-
JVM详解
https://www.cnblogs.com/lishun1005/p/6019678.html https://segmentfault.com/a/1190000014395186 https://www.cnblogs.com/zwbg/p/6194470.html https://blog.csdn.net/ns_code/article/details/17565503转载 2019-04-11 11:55:21 · 115 阅读 · 0 评论 -
8、Java内存模型与线程
1、Java内存模型 1.1 主内存和工作内存 Java线程<->工作内存<->内存交互<->主内存 1.2 内存间交互操作 1)lock 2)unlock 3)read 4)load 5)use 6)assign 7)store 8)write 1.3 对于volatile型变量的特殊规则 volatile型变量的两种特性: 1)保证此变量对所有线程的可见性:...原创 2019-04-24 14:04:14 · 103 阅读 · 0 评论 -
7、Tomcat类加载器结构
1、Tomcat可存放jar类库的地方 1)/common/* : Tomcat和所有Web应用都可以访问 2)/server/* : 仅Tomcat可以访问 3)/shared/* : 仅所有Web应用可以访问 4)另外Web应用程序自身的目录:/WEB-INF/*: 仅单个Web应用可以访问 2、各种ClassLoader 1)CommonClassLoader: 加载/common/* 2...原创 2019-04-24 10:27:21 · 321 阅读 · 0 评论 -
6、运行时栈帧结构
运行时栈帧结构 1)局部变量表 2)操作数栈 3)动态连接 4)方法返回地址原创 2019-04-24 09:42:44 · 105 阅读 · 0 评论 -
5、JVM类加载机制
1、类加载步骤 加载-》验证-》准备-》解析-》初始化-》使用-》卸载 链接:验证-》准备-》解析 初始化时机: 1)new、invoke指令 2)java.lang.refect反射调用 3)初始化子类时,如果父类没初始化,则触发父类初始化。 2、类加载过程 2.1 加载 1)通过类的全限定名获取二进制字节流 2)将字节流所代表的静态结构转化为方法区的运行时数据结构 3)在内存中生成一个代表这个...原创 2019-04-23 18:28:07 · 126 阅读 · 0 评论 -
4、类文件结构
1、无关性的基石-字节码(.class) 2、Class类文件的结构 8位字节为基础单位的二进制流。 两种数据类型:无符号数和表。 无符号数:基本的数据类型。 表:无符号数或者其他表复合的数据类型。 2.1 魔数与Class文件的版本 魔数:文件首4字节 版本:5,6是次版本号,7,8字节是主版本号 2.2 常量池 版本之后是常量池。 常量池:字面量和符号引用 字面量:文本字符串、声明为final...原创 2019-04-23 17:11:36 · 94 阅读 · 0 评论 -
3、虚拟机性能监控与故障处理工具
1、JDK的命令行工具 1.1 jps:(jvm process status)虚拟机进程状况 1.2 jstat:(JVM Statistics Monitoring)虚拟机统计信息监视 1.3 jinfo:java配置信息 1.4 jmap: Java内存映射 用户生成堆快照 1.5 jhat: JVM堆转储快照分析 1.6 jstack: Java堆栈跟踪 2、JDK的可视化工具 2.1 J...原创 2019-04-23 16:41:49 · 79 阅读 · 0 评论 -
2、垃圾收集器与内存分配策略
1、判断对象是否已死 1.1 引用计数算法? java没有用引用计数算法,难于解决对象间的相互引用问题。 1.2 可达性分析算法 通过GC Roots为起点,如果没有达到一个对象,则不可达。 可作为GC Roots的对象: 1)栈中的引用的对象。 2)方法区中类静态属性引用的对象。 3)方法区中常量引用的对象。 4)本地方法栈中JNI引用的对象。 1.3 再谈引用 分类: 1)强引用 2)软引用...原创 2019-04-23 16:21:04 · 127 阅读 · 0 评论 -
1、Java内存区域
1、运行时数据区域 1.1 程序计数器 程序计数器:当前线程所执行的字节码指示器。字节码解释器根据这个计数器的值来选取下一条需要执行的字节码指令。 线程私有的内存区域。唯一不会出错OutOfMemoryError。 执行的指令分为几种: 1)java方法:计数器记录的是正在执行虚拟机字节码指令的地址; 2)Native方法:计数值为空。 1.2 Java栈 也是线程私有的,它的生命周期跟线程相同 ...原创 2019-04-23 15:54:49 · 99 阅读 · 0 评论 -
9、线程安全与锁优化
1、线程安全的实现方法 1.1 互斥同步(悲观锁) 1)synchronized:在同步块形成monitorenter和monitorexit指令。synchronized是一个重要级的操作。 2)java.util.concurrent.Lock a、等待中断:在长时间等待锁时,可以放弃等待。 b、公平锁:多个线程在等待同一个锁时,根据申请锁的时间顺序来依次获得。 c、锁绑定多个条件:可以一次锁...原创 2019-04-24 14:30:58 · 84 阅读 · 0 评论