Currently I receive rustc crashes after memory usage get to 3GB (1GB RAM + 2GB SWAP) when building firefox. After looking around why, I found that kernel isn't build with lpae extension.
Although H3 soc supports lpae (Large Physical Address Extension), but kernel has CONFIG_ARM_LPAE flag not set and so we can't use more than 3GB of memory (1GB is reserved for kernel).
(Processors that implement the ARMv7-A Large Physical Address Extension (LPAE), expand the range of accessible physical addresses from 4GB (232 bytes) to 1024GB (240 bytes) a terabyte, by translating 32-bit virtual memory addresses into 40-bit physical memory addresses.)
After looking around I found that there isn't any armbian release where this flag is enabled, but other distros have this correctly enabled by default,
debian https://wiki.debian.org/DebianKernel/ARMMP
openwrt
I also wonder if used build options are generic or did they make use of CPU extensions. H3 also supports VFPv4 or VFPv4-D32
for H3 example: -march=armv7ve -mtune=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4
my output from
cat /proc/cpuinfo
orangepi-PC
processor : 3
model name : ARMv7 Processor rev 5 (v7l)
BogoMIPS : 65.14
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xc07
CPU revision : 5