Java и вручную выполнение завершают

Вы здесь не указываете компилятор, но предположим, что это clang++ или g++ или что-то подобное.

Тогда флаг -l<library> просто указывает, что библиотека <library> должна при поиске. Этот поиск будет включать стандартный список каталогов поиска и другие, которые, возможно, были добавлены в путь к библиотеке.

Таким образом, флаг -lstdc++ просто указывает, что библиотеку следует искать в момент ссылки. Это не влияет на версию c ++, которую компилятор должен считать компиляцией.

Напротив, флаг -std=c++ обычно действует как переключатель в компилятор, который:

  • указывает используемую версию c ++,
  • автоматически вызывает соответствующую библиотеку и включает пути, которые будут добавлены к пути поиска
16
задан tshepang 8 February 2014 в 19:03
поделиться

2 ответа

Согласно этой простой тестовой программе, JVM все еще выполнит свой вызов для завершения () даже при явном вызове его:

private static class Blah
{
  public void finalize() { System.out.println("finalizing!"); }
}

private static void f() throws Throwable
{
   Blah blah = new Blah();
   blah.finalize();
}

public static void main(String[] args) throws Throwable
{
    System.out.println("start");
    f();
    System.gc();
    System.out.println("done");
}

вывод:

запускаются
завершение!
завершение!
сделанный

Каждый ресурс там говорит, чтобы никогда звонить, завершают () явно, и в значительной степени даже не реализуют метод, потому что нет никаких гарантий относительно того, если и когда это назовут. Вы более обеспечены просто закрытие всех Ваших ресурсов вручную.

29
ответ дан 30 November 2019 в 16:43
поделиться

Завершить метод никогда не вызывается несколько раз JVM ни для какого данного объекта. Вы не должны полагаться, завершают так или иначе, потому что нет никакой гарантии, что это будет вызвано. Если Вы звоните, завершают, потому что необходимо выполниться, очищают код тогда лучше, чтобы поместить его в отдельный метод и сделать его явным, например:

public void cleanUp() {
  .
  .
  .
}

myInstance.cleanUp();
1
ответ дан 30 November 2019 в 16:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: