Золотое соотношение отсутствует, поскольку приложения Java имеют все формы и размеры. Для многопользовательского сервера WebSphere EE PermGen будет огромным из-за загрузки десятков корпоративных WAR-систем, но для небольшой встроенной системы PermGen должен быть уменьшен до абсолютного минимума. Другой крайностью была бы база данных в памяти, написанная на Java, которая содержит данные GB, но имеет относительно небольшой PermGen.
PermGen обычно определяется загруженными классами. Если нет библиотек генерации утечки ClassLoader
или байт-кода, то у бонкеров, генерирующих миллионы прокси-классов, размер не должен иметь значения. GC на PermGen редко является самой медленной частью полного цикла GC.
К счастью, с Java 8+ у нас теперь есть MetaSpace вместо PermGen, и нам больше не нужно его размер (хотя разумно делать кепку это).
Вам нужно mod zzz;
только один раз в main.rs
.
В aaa.rs
и bbb.rs
вам нужен use crate::zzz;
, а не mod zzz;
.
Пример:
Файл src/aaa.rs
:
use crate::zzz; // `crate::` is required since 2018 edition
pub fn do_something() {
zzz::do_stuff();
}
Файл src/bbb.rs
:
use crate::zzz;
pub fn do_something_else() {
zzz::do_stuff();
}
Файл src/main.rs
: [1127 ]
// src/main.rs
mod aaa;
mod bbb;
mod zzz;
fn main() {
aaa::do_something();
bbb::do_something_else();
}
Файл src/zzz.rs
:
pub fn do_stuff() {
println!("does stuff zzz");
}
Вам понадобится mod zzz;
внутри модуля aaa
, только если у вас есть каталог с именем aaa
и внутри это файлы mod.rs
и zzz.rs
. Затем вам нужно будет поместить mod zzz;
в mod.rs
, чтобы сделать подмодуль aaa::zzz
видимым для остальной части вашей программы.