首页 > 其他分享 >Dart Isolate进一步理解

Dart Isolate进一步理解

时间:2023-10-13 11:37:01浏览次数:29  
标签:创建 FfiData Isolate Dart 理解 GC address isolate1

var resFuture = Isolate.run(callbackFun);  // 在FfiData的test方法里创建出isolate1

这个isolate1虽然和主的Isolate不共用堆内存(至少在isolate1结束前是这样),但是isolate1在创建时是能捕获在主Isolate里初始化的final字段的,

因此两个isolate共存期间,虽然他们的堆内存互相隔离,但是GC层面,是要求isolate1结束了,才能将主Isolate里创建的FfiData对象给GC掉,

哪怕是在主Isolate里该FfiData对象已经明面上没有变量引用它了;

这个听起来有点像结构化并发的概念,要求子的结束了,才能清理父的(但是还需要确认是否只针对FfiData类,如果这个isolate1不是在FfiData里创建的会怎么样?);

 

经过测试,如果isolate1是在FfiData外部,比如main方法里创建的,它的callbackFun里也通过data?.address引用了FfiData里的address(且获取到了malloc创建的空间的地址)

,这个时候isolate1没有结束的话,DVM不会等待isolate1结束才GC这个FfiData对象,这种情况下要很小心的在isolate1里Pointer.fromAddress,因为这个address指向的空间可能已经被释放了;

标签:创建,FfiData,Isolate,Dart,理解,GC,address,isolate1
From: https://www.cnblogs.com/silentdoer/p/17761669.html

相关文章

  • 每日一题:探究响应式本质,以最简单的方式理解响应式
    1、响应式本质就是把数据和函数相关联起来,当数据变化时,函数自动执行。当然这对于函数和数据也是有要求的函数必须是以下几种:rendercomputedwatchwatchEffect数据必须是以下几种:响应式数据在函数中用到的数据2、例子2.1<template><divclass="responsive"><h......
  • 一些对dp突然的理解
    突然想到了一些理解,感觉有些模糊,怕忘记,就赶紧记下来就是对于状态的设计用01背包举例子吧,我们设计状态的时候一定是要保证所有可能在最后优秀的子状态在前面的时候是能够保留下来的也就是我们的状态设计要能够保留那些在最后优秀但是现在可能不优秀的情况,而不是一味的追求最优子结......
  • 软件测试|深入理解SQL RIGHT JOIN:语法、用法及示例解析
    引言在SQL中,JOIN是一种重要的操作,用于将两个或多个表中的数据关联在一起。SQL提供了多种JOIN类型,其中之一是RIGHTJOIN。RIGHTJOIN用于从右表中选择所有记录,并将其与左表中匹配的记录组合在一起。本文将深入探讨SQLRIGHTJOIN的语法、用法以及通过实例解析来说明其作用。RIGH......
  • 软件测试|深入理解SQL FULL JOIN:语法、用法及示例解析
    简介在SQL中,JOIN是一个强大的操作,它允许将两个或多个表中的数据进行关联。SQL提供了多种JOIN类型,其中之一是FULLJOIN。FULLJOIN允许从左表和右表中选择所有记录,并将它们组合在一起。本文将深入探讨SQLFULLJOIN的语法、用法,并通过实例解析来说明其作用。FULLJOIN基本语法......
  • Flex布局的三个属性要深刻理解!
    在我们日常开发中,flex布局可以说是家常便饭,对于很多的我们来说(你懂得^_^),可能我们用的比较多的应该就是垂直居中里,也就是下面这段代码:.flex-box{display:flex;justify-content:center;align-items:center;}写的非常好(^_^)!然后我们都知道这个是定义在父元素的,布局效果是......
  • 【面试题】说说你对 async和await 理解
    asyncawait详解原理:async声明该函数是异步的,且该函数会返回一个promise。await必须放在async函数中使用await+Promise这是最常见的场景,await会等待Promise的状态改为fullfilled,如果成功,那么会将async函数剩余任务推入到微任务队列,如果失败,那么剩余任务不会被推入微任务队列执行,它......
  • 前端进阶系列——理解 React Ref
    前端进阶系列——理解ReactRef秦书羽杭州@朝夕光年​关注他 17人赞同了该文章Ref是Reference(引用)的缩写。一、前言在React中通常遵循“自上而下”的“单向数据流”。父组件和子组件的通讯只能通过Props。如果要修改一个子组件,我们要修改......
  • Dart 中的final和const
     取值的时机不同,const在编译时候就已经确定下来,而final修饰的变量在运行时才会确定下来。应用范畴不同,final用来修饰变量,const不仅修饰变量,还可以修饰常量构造函数。相同内容对象创建不同,const的list1,list2内容一样,会指向同一个对象。final修饰的list1和list2内容一样,但是......
  • 深入理解js中的yield
    https://blog.csdn.net/qq_43050077/article/details/120448496https://www.jianshu.com/p/ebd4d4b43cf7......
  • 通俗理解GAN -- 基础认知
     Smiling&Weeping----你已春风摇曳,我仍一身旧雪 1.GAN的基本思想GAN全称对抗生成网络,顾名思义是生成模型的一种,而他的训练则是一种对抗博弈状态中的。下面我们举例来解释一下GAN的基本思想。假如你是一名篮球运动员,你想在下次比赛......