ciao andbin!

ho modifcato il codice così e funziona:
codice:
    public static void main(String[] args) throws IOException {
        final HttpServer server = startServer();

        Timer timer = new Timer();
        timer.scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                Runtime runtime = Runtime.getRuntime();
                long memoryBytes = runtime.totalMemory() - runtime.freeMemory();
                long memoryMBytes = memoryBytes / MEGABYTE;
                System.out.println("MB usati: " + memoryMBytes);
                if (memoryMBytes > 80) {
                    runtime.gc();
                    System.out.println("Memoria pulita!");
                }
            }

        }, 5000, 5000);

        System.out.println(String.format("Jersey app started with WADL available at %sapplication.wadl\nHit enter to stop it...", BASE_URI));
        System.in.read();
        timer.cancel();
        server.shutdownNow();
    }
in effetti la memoria in questi test viene ripulita.
quando supera gli 80 MB, viene portata sui 10 MB.

però, se il gc() è solo un suggerimento, c'è un altro modo per essere sicuro che la memoria venga ripulita nel caso superi una certa soglia?