![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| BIV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.12.2007 Репутация: нет Всего: 1 |
Всем доброе время суток! Я этот вопрос задавал в разделе приложения, но не уверен что в правильную тему впихнул, поэтому не помешало бы спросить на общем.
Можно ли с помощью языуа java получить числовое значения занимаемой оперативной памят и на данный момент? Объем занимаемое на жестком диске? Если да, то как это реализовать? |
|||
|
||||
| jk1 |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Занимаемое чем? Что касается памяти, то вы можете (если говорить о чистой Java) оперировать только той памятью, что вам выделяет JVM. Узнать о ней можно вот так:
Насчет занимаемого места на жестком диске смотрите сюда:
-------------------- Opinions are like assholes — everybody has one |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
На самом деле так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Виноват, накосячил немного. Для ясности добавлю, что вариант, описанный LSD возвращает объем свободного места на разделе. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| BIV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.12.2007 Репутация: нет Всего: 1 |
Про занимаемое место на жестком диске все очень доступно и понятно, спасибо!
Вот что касается оперативной памяти, мне нужно узнать сколько вообще оперативной памяти занято. То есть вот работает ОС, запущены какие-то приложения, играет музыка, вот мне нужно программно узнать сколько все это занимает оперативки(включая и программу теста). Возможно ли это? |
|||
|
||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Насколько мне известно - нет. Вы можете получить только объем памяти, доступный JVM. |
|||
|
||||
| armixx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
Добрый день.
Ваши вопросы уже обсуждались раньше. На базе этого обсуждения я написал метод. Посмотрите. Может быть пригодится. Отдельные методы (File.].getTotalSpace и File.getUsableSpace()) работают только под 6 версией. Долго выполняется опрос флоппи-диска. А так, в целом, работает. public void systemInfo() { ProcessView pv=new ProcessView("Сбор системной информации",this.getBounds()); pv.start(); cw.setText(""); if( pv.isLoop() ) pv.writeText("\n\n Просмотр свойств",null); OperatingSystemMXBean mxb=(com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); System.out.println(mxb.getArch()); System.out.println("MemorySize: "+Usefull.fSize(mxb.getFreePhysicalMemorySize())); System.out.println("Total memory: "+Usefull.fSize(mxb.getTotalPhysicalMemorySize())); FileSystemView fsv=FileSystemView.getFileSystemView(); File[] roots=fsv.getRoots(); for(int i=0;i<roots.length;i++) { System.out.println("Root: "+roots[i]); } System.out.println("Home directory: "+fsv.getHomeDirectory()); System.out.println("File system roots returned by File.listRoots():"); File[] f=File.listRoots(); pv.writeText("Просмотр дисков",null); for(int i=0;i<f.length;i++) { if( pv.isLoop() ) pv.writeText("\n\n Просмотр диска "+f[i],null); System.out.println("Drive: "+f[i]); System.out.println("Display name: "+fsv.getSystemDisplayName(f[i])); System.out.println("Is drive : "+fsv.isDrive(f[i])); System.out.println("Is floppy: "+fsv.isFloppyDrive(f[i])); System.out.println("Readable: "+f[i].canRead()); System.out.println("Writable: "+f[i].canWrite()); long ts=f[i].getTotalSpace(),us=f[i].getUsableSpace(),fs=ts-us; System.out.println("Total space : "+Usefull.fSize(ts)); System.out.println("Usable space: "+Usefull.fSize(us)); System.out.println("Free space : "+Usefull.fSize(fs)); } pv.writeText("Готово",null); pv.close(); } |
|||
|
||||
| BIV |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 20.12.2007 Репутация: нет Всего: 1 |
armixx, огромное спасибо за такую работу. Буду разбираться.
Теперь мне остается докопаться до оперативки. Что-то мне подсказывает, что это можно реализовать только на Си... Нуторно там слишком с графическим интерфейсом возиться... |
|||
|
||||
| armixx |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 16.8.2010 Репутация: нет Всего: нет |
По идее, распределение процессов - функция ядра ОС. Для Виндов - WinApi.
Если не нужно кроссплатформенное решение, то можно написать обращение к системе на C и вызывать его через JNI. Графику оставить JAVную. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |