Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-05-2007, 12:29   #1
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
[JAVA6]oggetto di "dimensione fissa"

Nel java6, che voi sappiate, hanno introdotto "built-in" la possibilità di sapere quanta memoria centrale un oggetto occupa?
Con la java5 utilizzo il metodo descritto in questo articolo ma mi domando, essendo che nella nuova six version ci hanno messo pure un database intero, se si sono ricordati di inserire nelle librerie ufficiali questa funzionalità moolto utile per parecchi programmatori!
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 12:58   #2
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
ops ....ho notato che il titolo della discussione è un pò ambigua rispetto al corpo del messaggio: per "dimensione fissa" intendo la possibilità che ci sia una qualche collezione (tipo hashmap) che, nella fase di istanziazione, permetta di definire la quantità massima di memoria centrale che la collezione di oggetti occuperà e, nel quel caso si tenti di superare la soglia inserendo un nesimo oggetto, la chiamata del metodo .put generi errore o qualche altro tipo di "paradigma" per notificare l'avvenuto superamento della quantità massima di memoria disponibile.
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 13:33   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Puoi usare un agente strumentale (java.lang.instrument). Cosa che avrebbe dovuto fare anche chi ha scritto l'articolo che citi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 13:58   #4
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Puoi usare un agente strumentale (java.lang.instrument). Cosa che avrebbe dovuto fare anche chi ha scritto l'articolo che citi.
Questa mi è nuova... che so sti agenti "strumentali"? ...ne ho sentito parlare ma per lo più mi sembra che vengano utilizzati per il profiling delle applicazioni.....
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 14:02   #5
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Puoi usare un agente strumentale (java.lang.instrument). Cosa che avrebbe dovuto fare anche chi ha scritto l'articolo che citi.
l'articolo è del 2003(e mi sembra che instrument, che fra l'altro nn conoscevo, c'è da java 5
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 14:29   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
whops. Non so perchè ho pensato subito "guarda questo che non usa gli agenti" senza neanche guardare la data . Mea grandissima culpa. Domani leggendo un articolo del '98 e penserò "ma guarda questo che non usa Swing!".

Esempio e ci leviamo il pensiero.

Io parto sempre dall'idea "questo è lo strumento che voglio". In questo caso io voglio poter dire:

long dimensioneInByte = SizeAgent.getSizeOf(reference);

La cosa si rivela alquanto semplice. Questo è l'agente strumentale. Una nota: lo chiamo "strumentale" per non usare "di strumentalizzazione" perchè francamente mi fa schifo . Ma il termine corretto dovrebbe essere il secondo.

Codice:
package it.tukano.sizeagent;

import java.lang.instrument.*;

public class SizeAgent {
	private static volatile Instrumentation instrumentationInstance;

	public static void premain(String args, Instrumentation inst) {
		instrumentationInstance = inst;
	}
	public static long getSizeOf(Object reference) {
		return
			instrumentationInstance == null || instrumentationInstance == null ?
			-1 :
			instrumentationInstance.getObjectSize(reference);
	}
}
Fine. Per rendere disponibile l'agente si importa il package. Per renderlo "vivo" occorre impacchettarlo in un jar il cui file manifesto avrà la forma:

Codice:
Manifest-Version: 1.0
Premain-Class: it.tukano.sizeagent.SizeAgent
Con il jar per le mani, si lancia poi il programma che lo usa indicando alla jvm il jar dell'agente:

java -cp .;SizeAgent.jar -javaagent:SizeAgent.jar Main

Occhio però che il "sizeOf" di una mappa è la dimensione dell'oggetto HashMap, non di ciò che contiene. Per fare quello che ti serve dovrai probabilmente creare una mappa i cui metodi aggiungi e rimuovi registrino la dimensione dei nuovi arrivati e dei vecchi in partenza.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 15:35   #7
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
whops. Non so perchè ho pensato subito "guarda questo che non usa gli agenti" senza neanche guardare la data . Mea grandissima culpa. Domani leggendo un articolo del '98 e penserò "ma guarda questo che non usa Swing!".
a maggior sfregio

http://www.javaworld.com/javaforums/...age=0#Post7552
(come poi dici tu...conta solo le references)
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 15:46   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Conta la dimensione dell'oggetto che è poi la dimensione dei suoi campi. Siccome i campi sono puntatori ogni oggetto è relativamente leggero. Penso valga la pena di precisare che il getSizeOf di Instrumentation è il sizeof di C: è fatto con il sizeof di C.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 16:52   #9
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Codice:
E:\>javac SizeAgent.java
SizeAgent.java:1: package java.lang.instrument does not exist
import java.lang.instrument.*;
^
SizeAgent.java:4: cannot resolve symbol
symbol  : class Instrumentation
location: class SizeAgent
        private static volatile Instrumentation instrumentationInstance;
                                ^
SizeAgent.java:6: cannot resolve symbol
symbol  : class Instrumentation
location: class SizeAgent
        public static void premain(String args, Instrumentation inst) {
                                                ^
3 errors

E:\>java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode)
...ma siamo nella fantascienza!!?
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 16:57   #10
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Conta la dimensione dell'oggetto che è poi la dimensione dei suoi campi. Siccome i campi sono puntatori ogni oggetto è relativamente leggero. Penso valga la pena di precisare che il getSizeOf di Instrumentation è il sizeof di C: è fatto con il sizeof di C.
per cui in teoria si potrebbe usare lo stesso metodo usato nel link(usare la reflection per procurarsi tutti i riferimenti dell'oggetto ricorsivamente), ma fatto con l'instrument
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 19:06   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da Frank1962 Guarda i messaggi
...ma siamo nella fantascienza!!?
Mmmmhhhhh... prova a fare un:

javac -version

xthebol

Probabilmente nel caso di frank creerei un programma a parte che gestisca la struttura dati oppure ripiegherei sulla trasformazione dei dati in forma "binaria", usando quindi un ByteBuffer per contenerli. Nel primo caso somiglierebbe tanto ad un database in memoria, Nel secondo alloco un ByteBuffer di 32 megabyte e quella diventa la mia struttura dati.

Il primo salva la capra, il secondo i cavoli.

La capra è la possibilità di lavorare con degli oggetti. Connetto le due jvm tramite JNI, monitoro la seconda con JMX e sono a posto. Butto un po' di ram per il processo della seconda JVM.

I cavoli sono l'esatto controllo sulla quantità di memoria occupata.

Non so ma penso che tenterei col buffer. Ma dipende anche dai dati.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 22:16   #12
JavHack
Junior Member
 
Iscritto dal: Oct 2005
Messaggi: 17
Leggeti la doc della classe File in java 6, trovi sicuramente novità che ti interesseranno
JavHack è offline   Rispondi citando il messaggio o parte di esso
Old 10-05-2007, 22:52   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
mhhh... devo essermi perso qualcosa. Che c'è in java.io.File che può esserci utile?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 00:12   #14
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
ho creato il file jar e ho inserito il class con il codice compilato postato da pgi, però non riesco a capire come istanziare la classe SizeAgent nel mio progetto, o meglio, non ho capito se questa classe la devo anche inserire insieme alle classi del mio progetto oltre che passarla come file jar al main.....

ps: cmq il problema di compilazione era dovuto, come diceva giustamente pgi, alla versione del javac che era ferma alla 1.4
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------

Ultima modifica di Frank1962 : 11-05-2007 alle 00:20.
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 16:37   #15
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Includi il jar nel classpath (con -cp in esecuzione e compilazione) e quando vuoi la dimensione di un oggetto blublu semplicemente scrivi:

long size = SizeAgent.getSizeOf(blublu);

Ricordati anche di passare alla JVM l'agente con -javaagent:SizeAgent.jar
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 19:10   #16
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Codice:
String aux = new String("hellooooooooooooooooooo world!!!!");
long dimensioneInByte = SizeAgent.getSizeOf(aux);
sono risucito a farlo funzionare ma a quanto pare il funzionamento risulta non essere dei più intuitivi ....prendendo a esempio una String, come mai se cambio la lunghezza della stringa il output mi viene data sempre dimensione di 24byte (almeno nel mio caso) ?

ps: ho il sospetto che sto getSizeOf non fa quello che mi aspettavo....
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------

Ultima modifica di Frank1962 : 11-05-2007 alle 19:24.
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 19:33   #17
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Tutti i campi di un'istanza di una classe Java sono puntatori.

Se quel puntatore punta ad un array di 40 petabyte comunque conta per 1 puntatore. Perchè "nell'istanza" c'è il puntatore, non c'è l'array.

E' la stessa differenza che c'è tra il sizeof di una struttura c che contiene un array di 100 int ed il sizeof di una struttura c che contiene un puntatore ad int.

Nel primo caso conta il "peso" dei 100 interi, nel secondo il "peso" del puntatore.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 20:10   #18
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Tutti i campi di un'istanza di una classe Java sono puntatori.

Se quel puntatore punta ad un array di 40 petabyte comunque conta per 1 puntatore. Perchè "nell'istanza" c'è il puntatore, non c'è l'array.

E' la stessa differenza che c'è tra il sizeof di una struttura c che contiene un array di 100 int ed il sizeof di una struttura c che contiene un puntatore ad int.

Nel primo caso conta il "peso" dei 100 interi, nel secondo il "peso" del puntatore.
si ma allora che utilità ha un simile metodo? ....cioè alla fine mi ritorna sempre quanto occupa il puntatore; secondo me è poco intuitivo e ambiguo nel nome ....di un metodo SizeObject mi aspetto che venga ritornata la dimensione dell'oggetto che gli passo come argomento, ed è ovvio che un oggetto al suo interno sia composto da altri oggetti (ergo, puntatori a oggetti)
Nel caso della String non è possibile calcolare la dimensione del campo che compone l'oggetto stringa istanziato?
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 20:27   #19
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E che te la prendi con me? Mica l'ho scritto io il linguaggio di programmazione Java

Ma tu, di preciso, che ci devi fare con 'sta cosa?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 11-05-2007, 20:39   #20
Frank1962
Senior Member
 
L'Avatar di Frank1962
 
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
il problema più o meno è questo ......ho un webserver che registra tutte le richieste GET,POST,ecc e le inserisce in un "buffer" in attesa che vengano salvate su database..... questo buffer però dev'essere ovviamente limitato nella dimensione e non superare una certa soglia preimpostata in modo tale che nell'eventualità che ci siano troppe richieste queste non vadino ad occupare tutta la memoria centrale e vengano, anche se non salvate su db, cancellate dal buffer per far posto alle nuove richieste...... spero di essermi spiegato bene (ma temo di no)
__________________
----------------------------------------------
File reality.sys corrupted, Reboot Universe? Y/N
----------------------------------------------
Frank1962 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
HONOR sta lavorando a uno smartphone con...
Thermaltake MAGFloe 360 Ultra ARGB Sync:...
Xiaomi 15T ora in super offerta su Amazo...
Si stringe il cerchio attorno a TP-Link ...
Amazon cambia i prezzi ancora una volta:...
Imperdibili i Google Pixel 10 a questi p...
Dyson OnTrac in super offerta su Amazon:...
Amazon: la nuova ondata di licenziamenti...
Questo portatile è un mostro: MSI...
Apple Watch Series 11 GPS + Cellular cro...
JBL Clip 5 in forte sconto su Amazon: lo...
Il nuovo top di gamma compatto di OnePlu...
Cresce il divario tra dispositivi elettr...
La missione con equipaggio Shenzhou-21 h...
Il Galaxy S26 Edge potrebbe essere ancor...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v