Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Динамическая память; классы Vector и StringBuffer

Перевод на русский © Сергей Миссан, 2000
Оригинал статьи опубликован на сайте Javable.com

Java Q&A

Я хочу динамически распределять память для любого типа. Также, когда я использую класс Vector, он иногда выдает OutOfMemoryError. Как мне справиться с этой ситуацией?

Еще одна проблема возникает, когда я хочу создать длинную строку последовательно добавляя маленькие строки. Использование оператора + для перекрывания класса String занимает слишком много времени. Как можно сделать подобную операцию быстрее?

Отвечая на ваш вопрос по-поводу динамической памяти, когда вы создаете объект используя new, это все-равно что malloc() в C/C++. То есть, он выделяет память при создании объекта, динамически.

Для того, чтобы решить вашу проблему с классом Vector и OutOfMemoryError, создайте нить следящую за общим объемом памяти и свободной памятью. Когда память закончится, освободите ссылки вызвав gc. fee как в этом примере:

Runtime rt = Runtime.getRuntime();
long total = rt.freeMemory();
long free = rt.freeMemory();
if(total-free < 5000000) { //if it is less than 1MB
//release refs to some objects here
//the systems that create cache will release
//LRU objects here
rt.gc();
}

Для решения проблемы со строками, используйте класс StringBuffer. String являеться немодифицируемым объектом (immutable), то есть вы не можете его менять. Каждое изменение будет создавать новый Object. StringBuffer, в свою очередь, значительно быстрее и может модифицироваться -- вы можете добавлять к нему строки не создавая новый объект. Например, так:

String initialString = "initial ";
StringBuffer sb = new StringBuffer(initialString);
String newString = "some thing new ";
//use append as many times as you want
sb.append(newString);
//and when you want to get String
System.err.println(sb.toString());

Об авторе

Random Walk Computing это наибольшая консалтинговая фирма в Нью Йорке, специализирующаяся на Java/CORBA решениях для предприятий. Известные своим выдающимся знанием Java, консультанты Random Walk публикуются и выступают на самых престижных форумах мира. Для связи с Random Walk используйте javaqa@javaworld.com.

Reprinted with permission from the March 2000 edition of JavaWorld magazine.
Copyright © ITworld.com, Inc., an IDG Communications company.
View the original article at: http://www.javaworld.com/javaworld/javaqa/1999-08/02-qa-short.html

Назад | Содержание

 

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...