nandi/vflutter_ffipublic Fork 0
claude/ssh-key-rickub-25a7d3
Commits
Clone
git clone https://git.rickub.com/nandi/vflutter_ffi.git
git clone ssh://git@rickub.com/nandi/vflutter_ffi.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

memory_check.dart · 21 lines · 856 BDart Blame HistoryRaw
Initial commit: V -> Flutter FFI plugin ad0ccda nandi 7h ago1import 'dart:ffi';
2import 'dart:io';
3import 'package:ffi/ffi.dart';
4int rss() => int.parse(File('/proc/self/status').readAsLinesSync()
5 .firstWhere((l)=>l.startsWith('VmRSS')).split(RegExp(r'\s+'))[1]);
6
7void main(){
8 final lib = DynamicLibrary.open('libvflutter.so');
9 final greet = lib.lookupFunction<Pointer<Utf8> Function(Pointer<Utf8>),
10 Pointer<Utf8> Function(Pointer<Utf8>)>('vf_greet');
11 final vfree = lib.lookupFunction<Void Function(Pointer<Void>),
12 void Function(Pointer<Void>)>('vf_free');
13
14 // Regression guard for the -gc none ownership rule: RSS must stay flat.
15 final arg = 'fixed'.toNativeUtf8();
16 for (var i=0;i<5000;i++){ vfree(greet(arg).cast()); }
17 final before = rss();
18 for (var i=0;i<900000;i++){ vfree(greet(arg).cast()); }
19 print('native-only before: $before kB after: ${rss()} kB');
20 calloc.free(arg);
21}