![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm学习
文章平均质量分 84
lidongxiu0714
https://github.com/hpuzzuldx/
展开
-
java类加载机制详解
今天和大家探讨java虚拟机加载类的机制,jvm想执行.class文件第一步就是把class文件装载进内存。1.概述 引子:编程过程中,大家肯定遇到过java.lang.ClassNotFoundException错误,特别是当我们自定义类加载器进行类的加载或者利用java的反射机制获取Class对象时。 虚拟机整体架构的第一部分就是类装载器,Java类加载机...原创 2017-03-25 19:35:10 · 9463 阅读 · 3 评论 -
JVM学习之java内存模型
JVM学习之java内存模型以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者!!java虚拟机规范定义了一种java内存模型(JMM)来屏蔽不同硬件和操作系统的差异,达到跨平台运行效果,内存模型的定义一个宗旨就是并发内存访问操作不会产生歧义。类似C和C++等主流语言直接使用物理硬件和操作系统的内存模型,因此会由于不同平台内存模型的差异导致程序在一个平台上开发并...原创 2018-10-11 11:01:30 · 2722 阅读 · 0 评论 -
JVM学习之运行时数据区
深入理解jvm看过很多遍,每次遇到问题总是要去翻书,今天开始把知识点记录在博文中,网上的JVM教程多如牛毛,我在此处只做记录用。以下总结内容来自-----《深入理解Java虚拟机_JVM高级特性与最佳实践》java能够实现跨平台特性依靠java虚拟机和字节码文件,JVM利用垃圾回收算法实现内存的自动回收,简化了程序中内存的管理,使程序员摆脱了内存管理的束缚,但为了更好了编写高效程序,我们依然要...原创 2018-10-08 15:15:49 · 2888 阅读 · 0 评论 -
如何判断一个对象是否可回收,GC回收对象的过程方式,finilized函数
面试问题:判断一个对象是否可用(存活,可回收),GC回收对象的过程方式,finilized函数了解吗,调用了finilized函数的对象一定会被回收吗,可以主动调用finilized函数吗?判断一个对象是否可用:根搜索算法(可达性分析),引用计数法(循环引用,js使用)JVM使用的根搜索算法(引自深入理解JVM):一个对象到GC Roots没有任何引用链相连,则该对象不可用,这...原创 2018-09-26 16:58:07 · 5929 阅读 · 0 评论 -
JVM学习之对象内存布局,对象头
本篇内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》,感谢作者。创建对象之后需要使用对象,java中除了对对象属性方法的调用以外还有加锁实现同步等其他操作,这里的锁加在了哪里,如何记录锁,如何对锁进行分类(有对象锁,class锁),垃圾回收机制中有关于GC的标记,知道当前对象分代的年龄,这些都需要我们去探寻对象具体的内存布局。1 对象的内存布局HotSpot虚拟机中对象存储......原创 2018-10-08 15:54:29 · 4853 阅读 · 1 评论 -
JVM学习之java线程安全&锁优化技术
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者。1 线程安全的概念 线程安全的概念在书中作者讨论了很多,但都是比较抽象的定义,我所理解的线程安全(主要是对共享数据的操作,保证代码操作的正确性,就是无论在单线程还是多线程操作下,代码得到的结果都是正确的)。2 java语言中的线程安全2.1不可变一个不可变的对象(类似final)一...原创 2018-10-09 10:45:25 · 2923 阅读 · 0 评论 -
JVM学习之垃圾收集算法
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》,感谢作者!昨天下班后地铁上和以前的同学交谈,才知道永远不尝试新东西永远不会有新思路,希望写完基础系列之后自己能有所进步,然后分析更多有用的东西。1垃圾收集算法分类 垃圾收集算法是如何收集对象,也就是如何回收堆及其他被jvm管理的可回收的内存的算法,和书中一样这里只按照书本记录垃圾收集算法的思路。垃...原创 2018-10-10 10:07:41 · 2612 阅读 · 0 评论 -
JVM学习之java线程实现&调度和状态转换
以下blog内容来自《深入理解Java虚拟机_JVM高级特性与最佳实践》感谢作者!1 谨慎使用java 多线程 如何提升效率: 使用java时推荐利用多线程处理一些操作绝大多数情况下确实能提高效率,提高效率的原理在哪里呢,为什么说绝大多说情况呢。 在CPU单核时代,我们知道某一时刻工作的线程只能是一条,那多线程为什么还能提高效率呢,因为类似IO这种阻塞操作很多...原创 2018-10-10 18:25:16 · 3024 阅读 · 0 评论 -
JVM内存分配策略
本篇内容来自深入理解java虚拟机_JVM高级特性和最佳实践JVM内存分配策略java的内存自动管理可以总结为自动分配和自动回收内存。对象内存的分配主要是在堆上分配内存,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程有限分配在TLAB上。少数情况可以直接分配在老年代中。TLAB技术:JVM在内存新生代Eden Space中开辟了一小块线程私有的区域,称作TLAB(...原创 2019-01-23 18:00:34 · 2975 阅读 · 0 评论