一、码场心得
你是个能吃苦的人吗?
从前的能吃苦大多指的体力劳动的苦,但现在的能吃苦已经包括太多维度,包括:读书学习&寂寞的苦
、深度思考&脑力的苦
、自律习惯&修行的苦
、自控能力&放弃的苦
、低头做人&尊严的苦
。
虽然这些苦摆在眼前,但大多数人还是喜欢吃简单的苦。熬夜加班、日复一日、重复昨天、CRUD,最后身体发胖、体质下降、能力不足、自抱自泣!所以有些苦能不吃就不吃,要吃就吃那些有成长价值的苦。
今天你坚持了吗?
如果一件小事能坚持5年以上,那你一定是很了不起的人。是的,很了不起。人最难的就是想清楚了但做不到,或者偶尔做到长期做不到。
其实大多数走在研发路上的伙伴们,都知道自己该努力,但明明下好了的决心就是坚持不了多久。直到有一天被瓶颈限制在困局中才会着急,但这时候在想破局就真的很难了!
一、内存与线程
1、内存结构
内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。JVM的内存结构规定Java程序在执行时内存的申请、划分、使用、回收的管理策略,通说来说JVM的内存管理指运行时数据区这一大块的管理。
2、线程运行
JVM中一个应用是可以有多个线程并行执行,线程被一对一映射为服务所在操作系统线程,调度在可用的CPU上执行,启动时会创建一个操作系统线程;当该线程终止时,这个操作系统线程也会被回收。
在虚拟机启动运行时,会创建多个线程,数据区中有的模块是线程共享的,有的是线程私有的:
线程共享:元数据区、堆Heap;
线程私有:虚拟机栈、本地方法栈、程序计数器;
单个CPU在特定时刻只能执行一个线程,所以多线程通过几块空间的使用,然后不断的争抢CPU的执行时间段。
二、元数据空间
基本描述
方法元空间(方法区)在JVM启动的时候被创建,是被各个线程共享的内存空间,用于存放类和方法的元数据以及常量池,比如Class和Method。
在实际的开发中,经常因为加载的类太多,进而导致内存溢出问题,这样可以对元空间的大小进行扩展。
与堆的关系
元空间存放加载的类信息,当类被实例化时,堆中存储实例化的对象信息,并且通过对象类型数据的指针找到类。
三、堆空间
基本描述
JVM启动时创建堆区,是内存管理的核心区,通常情况下也是最大的内存空间,是被所有线程共享的,几乎所有的对象实例都要在堆中分配内存,所以这里也是垃圾回收的重点空间。
堆栈关系
栈是JVM运行时的单位,堆是存储单位,当栈中方法结束,相关对象失去所有引用后,不会马上被移除堆空间,要等到垃圾收集器运行的时候。
最后
在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例
感兴趣的朋友可以点击Java学习免费获取。
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
大家看完有什么不懂的可以在下方留言讨论也可以关注。
觉得文章对你有帮助的话记得关注我点个赞支持一下!
来粗略的介绍,每个小节点里面都有更细化的内容!**
大家看完有什么不懂的可以在下方留言讨论也可以关注。
觉得文章对你有帮助的话记得关注我点个赞支持一下!