From e92d97a6733de596c43a433a1c7c36d7f6aee2ec Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Fri, 22 May 2026 15:34:30 -0700 Subject: [PATCH 1/2] feat: update default memory from 2GB to 4GB --- packages/app-lib/src/api/jre.rs | 25 +++++++++++++++++++++---- packages/app-lib/src/state/settings.rs | 12 +++++++++++- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/app-lib/src/api/jre.rs b/packages/app-lib/src/api/jre.rs index d0a2e74572..d9229e5044 100644 --- a/packages/app-lib/src/api/jre.rs +++ b/packages/app-lib/src/api/jre.rs @@ -181,12 +181,29 @@ pub async fn test_jre( Ok(version == major_version) } -// Gets maximum memory in KiB. -pub async fn get_max_memory() -> crate::Result { - Ok(sysinfo::System::new_with_specifics( +fn system_memory_bytes() -> u64 { + sysinfo::System::new_with_specifics( RefreshKind::nothing() .with_memory(MemoryRefreshKind::nothing().with_ram()), ) .total_memory() - / 1024) +} + +/// Recommended default max heap (MiB) for new instances based on system RAM. +pub fn default_memory_max_mb() -> u32 { + const BYTES_PER_GIB: u64 = 1024 * 1024 * 1024; + let system_gib = system_memory_bytes() / BYTES_PER_GIB; + + if system_gib < 8 { + 1024 * 2 + } else if system_gib >= 24 { + 1024 * 6 + } else { + 1024 * 4 + } +} + +// Gets maximum memory in KiB. +pub async fn get_max_memory() -> crate::Result { + Ok(system_memory_bytes() / 1024) } diff --git a/packages/app-lib/src/state/settings.rs b/packages/app-lib/src/state/settings.rs index 9ef4ccf68b..a5307a8431 100644 --- a/packages/app-lib/src/state/settings.rs +++ b/packages/app-lib/src/state/settings.rs @@ -64,7 +64,7 @@ pub enum FeatureFlag { } impl Settings { - const CURRENT_VERSION: usize = 2; + const CURRENT_VERSION: usize = 3; pub async fn get( exec: impl sqlx::Executor<'_, Database = sqlx::Sqlite>, @@ -295,6 +295,16 @@ impl Settings { self.version = 2; } + 2 => { + // Update old default memory setting from 2GB to 4GB (depending on system memory) + const LEGACY_DEFAULT_MEMORY_MB: u32 = 2048; + if self.memory.maximum == LEGACY_DEFAULT_MEMORY_MB { + self.memory.maximum = + crate::api::jre::default_memory_max_mb(); + } + + self.version = 3; + } version => { return Err(crate::ErrorKind::OtherError(format!( "Invalid settings version: {version}" From 99143ad0280da0b6ed9a58269305271b695e125a Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Fri, 22 May 2026 15:35:57 -0700 Subject: [PATCH 2/2] prepr --- packages/app-lib/src/state/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/app-lib/src/state/settings.rs b/packages/app-lib/src/state/settings.rs index a5307a8431..813580333f 100644 --- a/packages/app-lib/src/state/settings.rs +++ b/packages/app-lib/src/state/settings.rs @@ -296,7 +296,7 @@ impl Settings { self.version = 2; } 2 => { - // Update old default memory setting from 2GB to 4GB (depending on system memory) + // Update old default memory setting from 2GB to 4GB (depending on system memory) const LEGACY_DEFAULT_MEMORY_MB: u32 = 2048; if self.memory.maximum == LEGACY_DEFAULT_MEMORY_MB { self.memory.maximum =