![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android进阶之路
文章平均质量分 85
让开,我要吃人了
这个作者很懒,什么都没留下…
展开
-
自定义View:Bitmap和Drawable
一、Bitmap和Drawable的含义Bitmap中文解释为位图,而本质上Bitmap是图片像素点的集合。Drawable本质也不是一张图,而是类似于View的图片载荷窗体。二者其实是没有所谓的互转关系的,因为它们本质就是不同的二个东西,它们其实是生产关系,Bitmap可以生产Drawable,Drawable可以生产Bitmap。二、Bitmap生产Drawablektx有现成的封装的方法:val bitmap = Bitmap.createBitmap(50, 50, Bit原创 2022-02-10 21:34:22 · 1197 阅读 · 1 评论 -
深入理解StateFlow
开篇flow api 已经慢慢被谷歌列为数据流的首选,可以见到官网的数据流篇都慢慢偏向于flow api,虽然LiveData等数据流类型已经深入开发者观念中,但是flow api也正慢慢的崛起出自己的市场。本篇讲的StateFlow是flow api中的一个更偏向于应用层的api,功能也非常和LiveData相似,那么为什么要出一个和LiveData类似的东西的,因为LiveData天生就引入了生命周期相关的概念,从设计角度出发,其实是耦合了生命周期这部分,所以现在才另起炉灶,出现了StateFlow原创 2022-02-10 20:17:43 · 1459 阅读 · 1 评论 -
Android技能树点亮计划-多module项目仓库设计
背景在Android App的成长过程中,随着包功能越来越多,团队越来越复杂,为了保证功能的清晰和可维护性、增加模块的内聚性,减小git推代码冲突的风险等等,App的开发模式会慢慢变成集成开发模式集成开发模式每个人负责一个或者多个模块,模块之间相互隔离,独立进行打包和升级,最后以远端依赖的方式集成到App中进行打包问题在采用集成开发模式的时候会碰到一个问题,因为主App都是通过implement 远端的依赖进行打包的,当在本地开发的时候,如何对模块的本地代码进行调试呢?一般我们的做法原创 2022-02-08 21:27:56 · 1265 阅读 · 2 评论 -
Jetpack新成员,App Startup
介绍App Startup是一个可以用于加速App启动速度的一个库。出现的原因以前初始化第三方库会在Application的onCreate中。class MyApplication : Application() { override fun onCreate() { super.onCreate() LitePal.initialize(this) AAA.initialize(this) BBB.initiali原创 2022-02-08 17:29:55 · 1414 阅读 · 2 评论 -
Databinding+LiveData轻松实现无重启换肤
最近项目需要用到无重启动态换肤功能,本来打算用github上star最多的 Android-skin-support但仔细一看发现太复杂而且2年没维护+大量issues没解决,最终放弃经过探索,发现 Databinding+LiveData 能低成本实现无重启换肤无重启动态换肤(不需要recreate()) 无需制作皮肤包 无额外依赖(Databinding+LiveData本身几乎开发必备) 低侵入性 AppCompat和Material组件默认支持(少量属性需要额外支持或适配) 自原创 2022-02-07 21:45:27 · 948 阅读 · 0 评论 -
Android 如何拦截用户频繁操作(比如点击事件)
前言在 Android 界面开发中,频繁操作是一个需要注意的点。 频繁操作: 频繁点击一个按钮,或者同时点击多个item,等产生的冲突情况。解决方案场景1假设在 Activiyt A 界面有一个 按钮 T ,点击T 将跳转到 Activity B.void handleClick(){ Intent intent = new Intent(ActivityA.this,ActivityB.class); startActivity(intent);}但是用户很可能原创 2022-02-07 20:51:51 · 362 阅读 · 2 评论 -
面试官:知道 Flutter 生命周期?下周来入职
作为一名移动端开发工程师,刚接触 Flutter 的时候,一定会有这样的疑问:Flutter 的生命周期是怎么样的?是如何处理生命周期的?我的 onCreate()[Android] 在哪里?viewDidLoad()[iOS] 呢? 我的业务逻辑应该放在哪里处理?初始化数据呢?希望看了这篇文章后,可以对你有一点小小的帮助。安卓如果你是一名安卓开发工程师,那么对于 Activity 生命周期肯定不陌生onCreate onStart onResume onPause onStop on原创 2022-01-26 20:57:30 · 1417 阅读 · 0 评论 -
QQ群头像 微信群头像 多图合并框架实现
现在多数app里面加入聊天已经是一个非常普遍的现象了,而微信和qq则是通讯领域的鼻祖了。如果产品经理在考虑做聊天设计的时候,多数会参考。常常你会听到,你看微信和qq都是这么做的,你就这么来吧,虽然心理有一万个不痛快,但谁叫我们是有一个有追求的程序员呢。所以产品的要求是实现类似微信的群头像。类似如下多图合并作为程序员,首先会评估下工作量吧。在产品眼里,就是把图片合成一起嘛,有啥难度吗?所以工作时间决定了你能做成什么样吧方案分析:方案1、直接写成布局,然后按照不同的布局加载不原创 2022-01-26 16:59:47 · 793 阅读 · 0 评论 -
史上最全 Android 中高级工程师面试复习大纲
概述都说金三银四青铜五,这几个月份是程序员最好的跳槽时间,笔者也打算趁着这个时间换下工作。找工作之前看了很多面试题,复习资料,但是发现纯看面试题是不行的,因为靠背的东西是记不牢的,需要知识成体系才可以,所以笔者整理了一份复习大纲,基本涵盖了 Android 中高级工程师面试所必须知识点,希望可以通过此文帮助一些想换工作的朋友更好的复习,准备面试。本文只罗列出大纲内容,至于每个模块的详细内容,网上很多资料,可自行查阅,后序有时间会放一些我复习时看的资料,这样复习起来知识更成体系,事半功倍。1、Ja原创 2022-01-25 21:21:23 · 193 阅读 · 3 评论 -
如何在 Flutter 创建一个后台任务
原文www.dltlabs.com/blog/flutte…参考pub.dev/packages/ba…正文今天,我将解释如何在 Flutter 创建一个后台任务。在此之前,让我们理解什么是后台任务。后台任务是在后台运行的应用程序的辅助进程,即使应用程序没有运行或处于终止状态。这一功能对于需要在后台执行任务而不需要用户打开应用程序的应用程序来说是有益的ーー例如,每 15 分钟调用 api 获取数据。让我们在一个示例项目中实现一个后台任务,以便更好地理解这一操作的含义。步原创 2022-01-25 15:47:02 · 2998 阅读 · 2 评论 -
Jetpack Compose - 浅谈derivedStateOf(四)
初识 derivedStateOf首先看这样一段代码:@Composablefun TodoList(highPriorityKeywords: ArrayList<String> = arrayListOf("Review", "Unblock", "Compose")) { val todoTasks = remember { mutableStateListOf<String>("huawei", "xiaomi", "oppo", "apple", "C原创 2022-01-24 20:42:49 · 1736 阅读 · 2 评论 -
大龄Android程序员刚迈过了 35 岁这个“坎儿”,和大家说点儿心里话
今年是 202年 1月 21日,我已经上班第三天了,没错,我们公司已经开工了。不知道是不是整天都带着口罩的缘故,感觉这周的工作效率很低,晚上回家写技术文章效率也低,今天决定水一篇……不不不,今天我想和大家分享分享我这么多年的一些经验和感悟。先说说我对公司开工的说法我不是奋斗B,我平时不会为了加班而加班的,活儿忙的时候加班,不忙的时候基本上到点儿就撤,有些领导可能会看加班时间的长短,我也不会 care 的,因为我觉得作为一名程序员,主要按时按质量完成开发任务,保证系统稳定运行就足够了...原创 2022-01-21 20:24:17 · 6435 阅读 · 3 评论 -
移动端App架构Demo
移动端App架构Demo项目地址:github.com/yeshu-cn/mo…通过分层和接口的架构设计,实现可以快速Mock,单元测试的APP实例。功能登录,注册。 发帖,帖子列表,评论。 帖子点赞和帖子收藏。 修改用户昵称和头像。架构三层结构:业务层,持久层,展示层。 本地实现业务逻辑。 使用内存来实现持久层。ui:展示层,主要负责数据展示和用户交互。domain:业务层,利用抽象的Repository和Service接口实现业务逻辑UseCase,UseCas原创 2022-01-18 21:11:20 · 579 阅读 · 2 评论 -
第一章 常见跨平台解决方案及Flutter架构
近些年来,不断的有前端跨平台方案涌现出来,比如基于WebView的Cordova,还有渲染成原生控件的Reactive、Weex等,那么,这些跨平台方案有什么通用的实现思路呢,而Flutter的设计思路与他们的区别又是什么呢。带着这些疑问,本章将会介绍什么是跨平台,常见的跨平台方案有哪些,以及Flutter的实现方案。1.1 跨平台解决方案1.1.1什么是跨平台我们知道,CPU有不同的架构和指令集,上层也有不同的操作系统,一个系统的可执行文件在另一个系统上就是不可执行的,比如Windows的e.原创 2022-01-17 17:27:26 · 3487 阅读 · 2 评论 -
Android修炼系列(一),写一篇易懂的动态代理讲解
在说动态代理之前,先来简单看下代理模式。代理是最基本的设计模式之一。它能够插入一个用来替代“实际”对象的“代理”对象,来提供额外的或不同的操作。这些操作通常涉及与“实际”对象的通信,因此“代理”对象通常充当着中间人的角色。代理模式代理对象为“实际”对象提供一个替身或占位符以控制对这个“实际”对象的访问。被代理的对象可以是远程的对象,创建开销大的对象或需要安全控制的对象。来看下类图:再来看下类图对应代码,这是IObject接口,真实对象RealObj和代理对象ObjProxy都实现此接口:原创 2022-01-14 16:53:34 · 328 阅读 · 0 评论 -
Android开发进大厂系列(一)阿里篇
以前我提到过,2021年我实现了一个小目标,毕业三年加入阿里。听上去好像挺厉害,挺光鲜,但是实际上并不那么容易,在这背后有很多我自己摸索和努力的故事。在这里我想分享一些我的经验,送给那些跟我一样,没名校背景没大厂背景,但是想进阿里(或其他大厂),又有点迷茫不知该如何前进的人。其实在进阿里之前,我也挺迷茫,内心有一些谜团一直困扰着我,比如阿里招人标准是什么?,自己距离这个标准有多少差距?那时候一直不知道,就好像置身于沙漠之中,却不知道往哪里走。这时候,找到方向最为关键。(很多人跟我那时候一样迷茫,原创 2022-01-13 20:00:44 · 145 阅读 · 2 评论 -
android充电架构的分析
前言目前android设备越来越多,对于快速充电和长时间待机的需求就不言而喻。对应于此的就是各大手机厂商不断突破大功率充电新闻频繁的出现。在个人目前遇到的快充方案中,基本上在大的架构下属于同一种类型。故分析记录下来。基本原理充电简单粗暴点来说就是把电流灌到电池里面去。那么最简单的方法就是直接拿一个电源接在电池的正负极。只要电源电压高于电池电压就可以把电流灌进去。就如同直接打开水龙头开关接水一样。但是这样会存在很多问题。例如:电池此时的电压很小,电源电压很高,一怼上电池上的电流就会变得非常大,原创 2022-01-06 21:18:07 · 783 阅读 · 3 评论 -
Kotlin invoke约定,让Kotlin代码更简洁
前言最近看到DSL这个东西,不由的觉得里面可以利用Kotlin的一些特性能简化代码,所以具体来看看它是如何实现的。正文首先一上来就说原理或许对于不熟悉Kotlin的来说会感觉有点突兀,所以我准备从头梳理一下。约定Kotlin的约定我们在平时开发中肯定用到过,不过我们没有仔细去注意这个名词而已。约定的概念就是:使用与常规方法调用语法不同的、更简洁的符号,调用着有着特殊命名的函数。这里提取2个关键点,一个是更简洁的符号调用,一个是特殊命名的函数。说白了就是让函数调用更加简洁。比如我们原创 2022-01-05 19:55:47 · 3309 阅读 · 2 评论 -
Google 推荐使用 MVI 架构?卷起来了~
阿凡提 - 供应链物流 避坑有些无奈,项目着急缺人,草草结束面试环节。到楼下抽了两根烟,依然处于懵逼环节。简单介绍下项目经历。熟悉 Kotlin 吗?简单说下 let、apply、run 区别。它们是 Kotlin 提供的作用域函数,也就是在对象的上下文中执行代码块。可以从函数内使用区分进行理解:this、itthis:with: 内联函数,函数内使用 this 来访问该对象属性方法,返回值为函数块最后一行或指定的 return;run: with、let 结合体,可以通过 thi原创 2022-01-04 15:32:10 · 2288 阅读 · 3 评论 -
满满的WebView优化详解,让你的H5实现秒开体验。
WebView与原生对比差在哪里?这里引用百度APP图片来说明。百度的开发人员将这一整个过程划分为了四个阶段,并统计出了各个阶段的平均耗时。可以看到,在初始化组件阶段就花费了 260 ms,首次创建耗时均值为 500 ms,毫无疑问这是我们要优化的第一点。而最耗时的当属正文加载&渲染和图片加载两个阶段。为什么会这么耗时呢,因为这两个阶段需要进行多次网络请求、JS调用、IO读写。所以这里也是我们需要优化的地方。可以得出优化方向:WebView预创建和复用 渲染优化(JS、C.原创 2021-12-29 17:50:21 · 2222 阅读 · 1 评论 -
Android 手机震动提示效果 Android Vibrator 手机震动
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么。在手机App中的一些业务场景,如用户点击按钮操作震动提示一下或者是扫码环节中扫码成功震动提示一下用户,是一个不错的细节处理,本文章给大家分享一下 Android 中的代码实现。1 清单文件中添加权限在清单文件 AndroidManifest.xml 中添加权限如下<uses-permission .原创 2021-12-28 21:43:15 · 811 阅读 · 2 评论 -
如何在自定义View里使用ViewModel
前言ViewModel只能在Activty和Fragment里使用吗,能不能在View里使用呢?假如我要提供一个View,它包含一堆数据和状态,比如一个新闻列表、时刻表等。我是否可以再这个这个自定义View里使用ViewModel去管理数据呢?在View中使用ViewModel答案是肯定的!那么我们说干就干,看看到底怎么使用。为了确保与宿主Avtivity/Fragment发生管理和便于宿主管理,我们需要使用ViewModelProvider去创建ViewModel,典型的使用方法如下:原创 2021-12-27 21:48:27 · 3660 阅读 · 3 评论 -
还在用kapt吗? 试试ksp吧 | 项目复盘
作者:究极逮虾户链接:https://juejin.cn/post/6939472660573192206大家退后,今天我要开始表演一下装逼的艺术。这次我们尝试性的使用谷歌前一阵子公布的ksp(Kotlin Symbol Processing),一款专门拿来给Kotlin项目提升注解生成速度的。在ksp出来以前,对于这种注解解释器,我们使用的都是java所提供的AbstractProcessor,我在以前的文章介绍过关于AbstractProcessor相关的内容。这次我们就来啃一啃谷歌的新东.原创 2021-12-26 21:51:34 · 1220 阅读 · 2 评论 -
AndroidNetworkWatcher:简化网络监听业务代码
作者:MichaelX链接:https://juejin.cn/post/6844903968804438024前言Android开发中经常遇到需要监听网络变化的场景,比如播放,比如访问网络时进行断网提示,于是有了今天的AndroidNetworkWatcher。项目地址AndroidNetworkWatcher:github.com/xiong-it/An…技术原理主要是将网络变化监听广播进行了封装,同时定义运行时注解,在网络变化时调用业务层代码,通知网络变化。用法由.原创 2021-12-24 17:29:26 · 104 阅读 · 2 评论 -
全面总结Android面试知识点,跳槽涨薪这一篇就够了
本篇文章的所有知识点是亲身经历十余家一二线互联网企业面试后总结产出,包含应聘Android开发岗位的各个方面的高频知识点,主要针对但不局限于Android应届面试。以下所有知识点都整理发布在Github/Gitbook,方便大家整理学习,文末附有链接。Java Java基础 Java集合框架 Java集合——ArrayList Java集合——LinkedList Java集合——HashMap Java集合——TreeMap Java集合——LinkedHashMap.原创 2021-12-23 18:01:07 · 110 阅读 · 2 评论 -
Flutter 的 2021 年终总结
作者:Marno链接:https://juejin.cn/post/7044794853103763487一、新年寄语又到年底了,不知道你们有没有觉得,自从过了某个年龄以后,时间好像就开始过的越来越快了。不知不觉,新冠疫情发生已经有 2 年多了,从疫情最开始的人心惶惶,再到我们国人万众一心抗疫,这场苦难好像无形中也增加了民族的凝聚力。如果可以许下一个愿望,希望在新的 2022,我们可以早日战胜新冠.二、引言全职使用 Flutter 开发也有 2 年多的时间了,从 Flutter.原创 2021-12-23 16:17:37 · 752 阅读 · 2 评论 -
RecyclerView的一些优化点
1.RecycledPool的重用场景以及使用:多个RecyclerView出现,并且他们的item布局结构一致,这时候可以进行重用。在进行RecyclerView的初始化设置时候进行RecycledPool的设置。 //每个单元的视频列表的RecycledPool private var mRecycledViewPool: RecyclerView.RecycledViewPool? = nullunitVideoListContentRv.run {原创 2021-12-22 21:40:53 · 1367 阅读 · 1 评论 -
满地鸡毛的一年 || 转行Android之路
生活已经很糟了,起码不会变的更糟。为什么不去努力一把呢? 还记得最初的梦想吗? 生存的意义是什么? 对现在的生活感到满意吗? 以上答案让我这个工作一年多的小萌新带你一起探索 辍学之路与大多数人不同,在十五六岁这个年纪里本该上学的年纪。由于分数不够高中,父母当时给了两个选择,1.给当地重点高中花钱补分,2.出去打工。 我思虑再三,还是选择了后者。于是父母帮我找了一个电器维修的师傅,交了8000块学习费。至此,我便天天坐公交去师傅店里当助手。学习电器维修...原创 2021-12-21 22:02:19 · 1011 阅读 · 3 评论 -
相比 XML , Compose 性能到底怎么样?
作者:RicardoMJiang链接:https://juejin.cn/post/7008522702835154980前言最近Compose已经正式发布了1.0版本,这说明谷歌认为Compose已经可以用于正式生产环境了那么相比传统的XML,Compose的性能到底怎么样呢?本文主要从构建性能与运行时两个方面来分析Compose的性能,数据主要来源于:Jetpack Compose — Before and after 与 Measuring Render Performance w.原创 2021-12-21 20:51:07 · 240 阅读 · 2 评论 -
满地鸡毛的一年 || 转行Android之路
生活已经很糟了,起码不会变的更糟。为什么不去努力一把呢? 还记得最初的梦想吗? 生存的意义是什么? 对现在的生活感到满意吗? 以上答案让我这个工作一年多的小萌新带你一起探索 辍学之路与大多数人不同,在十五六岁这个年纪里本该上学的年纪。由于分数不够高中,父母当时给了两个选择,1.给当地重点高中花钱补分,2.出去打工。 我思虑再三,还是选择了后者。于是父母帮我找了一个电器维修的师傅,交了8000块学习费。至此,我便天天坐公交去师傅店里当助手。学习电器...原创 2021-12-21 20:08:41 · 94 阅读 · 0 评论 -
ViewModel中传入Context的方法
原文链接:ViewModel中传入Context的方法 - 掘金ViewModel使用的越来越多了,严格来说,官方并不建议你在ViewModel中添加Context的引用。同时,ViewModel的构造方法是没有任何参数的,有的时候会很不灵活。以下记录两种方法。1.通过kotlin的拓展函数fun <T : ViewModelProvider, V : ViewModel> T.get( key: String, modelClass: Class<V>原创 2021-12-20 21:34:25 · 1124 阅读 · 2 评论 -
Kotlin 基础 | 委托及其应用
委托是常见的模式,它和编程语言无关,即把本来自己做的事情委托给另一个对象去做。装饰者模式和代理模式都通过委托复用了行为。Kotlin 在语言层面支持了委托,这一篇结合实例介绍一下 Kotlin 的委托。Kotlin 的装饰者模式装饰者模式和继承拥有相同的目的,都是为了扩展类,只不过它运用了更复杂的方式通:继承 + 组合。装饰者模式在复用原有类型和行为的基础上为其扩展功能。下面是装饰者模式的实例:interface Accessory { fun name(): String //原创 2021-12-17 16:43:04 · 1706 阅读 · 2 评论 -
Dart 2.15 发布的新特性
原文链接:https://juejin.cn/post/7041026188101287944Dart SDK 的 2.15 版本新增了具备有更快并发能力的 isolates 、支持 tear-off 的构造函数 、关于 dart:core 库枚举支持的改进、包发布者相关的新功能等等。isolates 的并发如今的物理设备几乎都有多核的 CPU ,能够并行地执行多个任务,而对于大多数 Dart 程序而言,这些内核的使用过程对开发人员来说是透明的:默认情况下 Dart 运行时所有 Dart原创 2021-12-16 21:56:11 · 217 阅读 · 2 评论 -
App全局灰度化实践-GlobalGray
这是一篇迟到了许久的文章,因工作原因一直没时间写(好吧,其实就是懒)。。导语清明节当天,各大公司都将自己的应用设成了全局灰色调,以哀悼逝去的同胞,作为程序猿的我们,当然要研究一下此技术的实习方案。思路首先,核心代码如下:Paint paint = new Paint();ColorMatrix cm = new ColorMatrix();cm.setSaturation(0);mPaint.setColorFilter(new ColorMatrixColorFilter(cm原创 2021-12-15 17:03:01 · 540 阅读 · 3 评论 -
Android面试官:我在Activity onResume()之前的任何一个生命周期中调用了finish()后,此Activity的生命周期会如何?
作者:Android王小波链接:https://juejin.cn/post/7038903088039591943一、前言:在Android开发中,Activity是四大组件中最重要的组件,然而Activity的生命周期又是其中最为基础的知识点,所以重要性不言而喻。我刚接触Android不足两年,之前也恶补了生命周期相关的知识,起初自认为了解的比较全面了,直到我被问到了上面的问题,然后我彻底懵了。我面试了许多家公司,大厂小厂都有面试,小厂没有被问到,大厂面试中,第一次是B站有问到我这个问题,我没原创 2021-12-14 17:48:23 · 2618 阅读 · 1 评论 -
千呼万唤始出来,Kotlin官方序列化库终相见(一)
作者:Viata链接:https://juejin.cn/post/6913512989916135432在相当长的一段时间里,kotlin一直都没有自己专属的序列化/反序列化库。于是只能拿Java的库来将就一下,最常用的大概就是Gson了。但是这样一来Kt的很多强大特性就用不了,比如参数默认值,属性委托等,就这样被迫退化为Javaer了(没错,在下正是kotlin吹,Java叛徒)。 虽然社区也维护了支持Kt特性的第三方序列化库,比如moshi,but并不好用,Gson用习惯了就喜欢这种简洁直白.原创 2021-12-13 15:43:41 · 3659 阅读 · 3 评论 -
Flutter 2.8 release 发布,快来看看新特性吧
原文链接:medium.com/flutter/wha…欢迎来到 Flutter 2.8!该版本包含了 207 位 contributors 和 178 位 reviewers 的内容,其中一共有 2,424 个合并的 PR,并 Closed 了 2976 个问题。与往常一样,Flutter 的工作的第一位就是保证质量,我们花费了大量时间来确保 Flutter 在支持的设备范围内可以尽可能平稳和稳健地运行。Startup该版本改进了应用的启动延迟问题,这个改进在 Google Pay 中.原创 2021-12-12 15:36:32 · 1289 阅读 · 2 评论 -
Kotlin与java的对比
打印日志//JavaSystem.out.print("hello world"); System.out.println("hello world");//Kotlinprint("hello world") println("hello world")定义变量与常量常//JavaString name = "hello world"; final String name = "hello world";//Kotlinvar name = "hello world"原创 2021-12-11 20:52:55 · 199 阅读 · 0 评论 -
Android 优雅的实现高亮搜索功能
作者:十年老兵链接:https://juejin.cn/post/6959484197178179621首先看效果图:整词高亮:分词高亮:下面贴上我封的方法 /** * 关键字高亮显示 * text 原文 * keyWord 需要高亮显示的关键字 * isCut 是否需要做分词高亮展示 * isCut = true 关键字里的每一个字,只要有都会高亮 * isCut = false(默认) 只有整词才会高亮 **/fun stringToH.原创 2021-12-10 16:00:43 · 193 阅读 · 1 评论 -
程序运行时,内存到底是如何进行分配的?
作者:沅兮链接:https://juejin.cn/post/7035932555740184583Java运行时内存分配将 Java 内存分为堆内存(heap)和栈内存(Stack)并不准确,Java 的内存区域划分实际上更为复杂。Java 虚拟机在执行 Java 程序的过程中,会把它所管理的内存划分为不同的数据区域:上图中:HelloWorld.java会经过编辑生成HelloWorld.class字节码文件。 Java 虚拟中要想访问HelloWorld...原创 2021-12-09 17:17:43 · 1654 阅读 · 3 评论