В Java на низком уровне статические переменные класса действительно хранятся в куче вместе со всеми другими метаданными класса.Для Java они выглядят как глобальные, но для подпрограмм низкоуровневого управления кучей JVM они представляют собой динамические данные (хотя они могут быть обработаны незначительно специально для повышения эффективности GC, поскольку они, вероятно, будут долговечны).В конце концов, классы можно выгружать, не ссылаясь на их загрузчик классов.
Что касается того, является ли он тем же самым, что и C malloc()
, маловероятно.Большинство JVM контролируют свои кучи на низком уровне;они забирают часть памяти из ОС и разделяют ее сами.Таким образом, большинство данных Java, включая статические, хранятся не в куче malloc, а в отдельной куче, управляемой JVM.