Pessoal, estou precisando para um projeto da faculdade, TCC, exibir as informações do computador no meu sistema.
O sistema já exibe o básico que consigo direto do java( informações de pastas, usuários, espaço em disco, número de procesadores, etc), porém o mais importante no meu caso, a memória:
- Memória FÍSICA total (quanto de memória tem instalado no pc)
- Memória física DISPONÍVEL (quanto de memória disponível existe)
- Memória VIRTUAL total (se possível, se não der belez, os anteriores sao mais importantes)
Bom, pode ser usando a api JNA, ou JNI, ou nativo do java, whatever!
EU só preciso saber como fazer isso.
Agradeço qualquer ajuda! Material, tutorial, referencias diretas, enfim…
Detalhe, o sistema vai rodar em windows e linux, ou seja, a solução precisa ser para os dois SOs.
Obrigado!
[color=darkblue]Não sei se vai ajudar, mas aqui tem algumas coisas que podem ser usadas para iniciar:
para espaço livre :[/color]
import java.io.File;
public class Teste {
public static void main(String[] args) {
File c = new File("C:/");
System.out.println("TOTAL: " + c.getTotalSpace());
System.out.println("LIVRE: " + c.getFreeSpace());
System.out.println("USADO: " +c.getUsableSpace());
}
}
[color=darkblue]Para memória total :[/color]
Runtime.getRuntime().totalMemory()
[color=darkblue]Para memória livre :[/color]
Runtime.getRuntime().freeMemory()
[color=darkblue]Acredito que para o que você quer seja melhor usar C[/color]
Os comandos que o Metaleiro passou se referem a memória da VM, não do sistema operacional. No caso, para esse tipo de informação é melhor não usar o Java mesmo. Use o C++ ou o C.
Ou mapeie as chamadas via JNI, como vc falou. Você já procurou no SO em questão, onde está essa informação?
Metaleiro, essas operações eu já conhecia, vou usar estas informações com a api File para medir o disco, mas o grande problema são informações da memória e cpu.
ViniGodoy, realmente, estas funções runtime sao referentes a jvm, já sabia disso também, de inicio pensie que eram referentes a memória da máquina, mas não eram.
Eu encontrei para windows uma biblioteca GlobalMemoryStatusEx, para Linux utilizei para informações de memória, número de processos, memória virtual a biblioteca sys/sysinfo.h, porém, usando ‘jnA’. Resolvido problema com discos e memória.
Agora a última coisa que preciso, as informações da cpu, via java a única coisa que consigo são número de cpus lógicas, ms informaçoes como clock, vendor, memória cache eu não achei nada para isso.
No linux eu tenho a opção de exporar para um arquivo o comando /proc/cpuinfo e ler do arquivo, mas eu queria algo mais direto, via código em C msm.
Se alguem souber, estou aberto a sugestões!
Obrigado por amba contribuições de ajuda!
Mais uma coisa, como é que eu sei quais funções de uma biblioteca eu posso usar?
Quero dizer, alguns tutoriais ensinam a ler a dll Kernel do windows.
Agora, como eu consigo acessar uma dll de terceiros que não seja documentada? tem alguma forma de listar os métodos (funções)?
[quote=pirado18]Mais uma coisa, como é que eu sei quais funções de uma biblioteca eu posso usar?
Quero dizer, alguns tutoriais ensinam a ler a dll Kernel do windows.
Agora, como eu consigo acessar uma dll de terceiros que não seja documentada? tem alguma forma de listar os métodos (funções)?[/quote]
Já ouviu falar do dumpbin? É o melhor amigo do programador. Ele mapeia uma dll e gera os nomes dos métodos para você. Mas detalhe, depende do tipo de codificação. Nomes c são diferentes de nomes c++, que possuem uma ? como parte do nome. Já sofri muito com softwares sem documentação, mas aprendi a me virar.
Dá uma lida aqui.
http://support.microsoft.com/kb/177429
Esse link é um tutorial
http://msdn.microsoft.com/en-us/library/aa446532.aspx
Sobre os recursos de hardware esse artigo é interessante. Pode criar um mapeamento jni para enviar as informações para o seu programa.
http://www.codeproject.com/KB/system/computerinfo.aspx