- 博客(7)
- 收藏
- 关注
原创 JVM入门(三)
运行时数据区 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理策略,保证了JVM的高效稳定运行,不同的JVM对于内存的划分方式和管理策略存在这部分差异。 每个JVM中只有一个RunTime实例,即为运行时环境,相当于内存结构中的那个框框,即运行时环境,通过它可以获取一些内存信息。Runtime.getRuntime()获取当前实例 方法区和堆和堆外内存(永久代或者元空间、代码缓存)红色的表示线程共享的
2020-10-22 23:08:51 191
原创 JVM入门(二)
jvm组成部分 类加载器的classLoader的角色 通过getClassLoader方法得到具体的类加载器,通过Car Class这个类模板来实例化不同的car实例 p27 待续。。。
2020-10-14 22:59:25 142
原创 JVM的入门(一)
机器码和字节码的区别 相信很多小伙伴有这样的疑问,明明都是二进制文件为什么字节码还需要jvm引擎编译成机器码之后才能被操作系统识别。 大学计算机组成原理确实都还给老师了,惭愧!!! 机器码就是说计算机能读懂的代码,简单点说就是给计算机执行的二进制代码. 字节码,是JAVA语言专有的,它是让JVM来执行的二进制代码 虽然都是二进制代码,但是由于执行它的环境不一样,所以它们存在一些指令集上的区别,也就是说就算给了一条汇编指令abc,最后cpu进过计算得到的值在不同的环境上是不同的。 一,机器码,完全依附硬件而
2020-10-13 23:32:38 282
原创 jvm类加载机制与使用MAT分析堆内存
jvm通过类加载器,将硬盘上编译好的class文件加载进jvm中。至于它是否可以运行,则有Execution Engine决定 类加载器主要有虚拟机自带的加载器和用户自定义加载器。其中启动类加载器主要加载java中的根类,像Object、Scanner等,这些根类加载时,它们的类加载器为NULL;扩展类加载器主要加载java外部的类(这些外部类存储......jdk\jre\lib\ext中),系统加载器主要加载当前APP中的所有类。 (ps:可以将用户自定义的类,作为jar包...
2020-09-23 22:33:48 249
原创 ConcurrentHashMap
1.hashmap如果要保证同步,该如何实现 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200920101717911.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3ODAyNjM3,size_16,color_FFFFFF,t_70#pic_cente 我们知道,如果多个线程同时访问hash
2020-09-22 21:41:33 199
原创 为什么看源码?
1.我任务看源码的目的之一是学习其中优秀的设计方式,包括数据结构以及设计模式的巧用。作为一个水货程序员,每当看自己或者同事写的代码,都会暗自咋舌:这都写的啥啊。知道有更好的实现方式,但是就是想不起来。可每当看见大神的各种操作,你不得不感叹:好美。项目组之间的代码我觉得是具有传染性的,懒散的设计风格、编码方式不是一个代码规范就能解决,而这些问题往往会导致一些隐藏的性能问题或者安全风险。优秀的程序员不仅仅是对自身的提高,更能提升整个团队。 ...
2020-09-21 15:31:56 152
原创 HashMap源码分析
HashMap结构 hashMap是由数组加链表组成的,再java8时,对hashmap做了进一部优化,是由数组+(链表和红黑树)组成的。 final int hash; final K key; V value; Node<K,V> next; HashMap分析 要想分析好hashMap就需要知道一些基础 1.针对一条链表,其数据插入在哪儿效率最高? 显然,对于链表数据的插入,插入到头部肯定比插入到尾部或者中间的效率要高。所以
2020-09-05 15:47:12 165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人