Удалить Eclipse под OSX?

Чтобы описать это, сначала давайте понять, как хранятся локальные переменные и объекты.

Локальная переменная хранится в стеке: enter image description here [/g1]

Если вы посмотрели на изображении вы должны понимать, как все работает.

Когда вызов функции вызывается Java-приложением, стек стека выделяется в стеке вызовов. Фрейм стека содержит параметры вызываемого метода, его локальные параметры и обратный адрес метода. Адрес возврата обозначает точку выполнения, из которой выполнение программы должно продолжаться после возврата вызванного метода. Если нет места для нового стека кадров, то StackOverflowError вызывается виртуальной машиной Java (JVM).

Наиболее распространенным случаем, который может исчерпать стек Java-приложения, является рекурсия. В рекурсии метод запускается во время его выполнения. Рекурсия рассматривается как мощный метод программирования общего назначения, но ее следует использовать с осторожностью, чтобы избежать StackOverflowError.

Пример, показывающий StackOverflowError, показан ниже:

StackOverflowErrorExample.java:

public class StackOverflowErrorExample {

    public static void recursivePrint(int num) {
        System.out.println("Number: " + num);

        if(num == 0)
            return;
        else
            recursivePrint(++num);
    }

    public static void main(String[] args) {
        StackOverflowErrorExample.recursivePrint(1);
    }
}

В этом примере мы определяем рекурсивный метод, называемый recursivePrint, который печатает целое число, а затем вызывает себя со следующим последовательным целым числом в качестве аргумента. Рекурсия заканчивается, пока мы не перейдем в 0 в качестве параметра. Однако в нашем примере мы передали параметр из 1 и его увеличивающих последователей, следовательно, рекурсия никогда не завершится.

Пример выполнения с использованием флага -Xss1M, который определяет размер стека потоков ниже 1MB, показано ниже:

Number: 1
Number: 2
Number: 3
...
Number: 6262
Number: 6263
Number: 6264
Number: 6265
Number: 6266
Exception in thread "main" java.lang.StackOverflowError
        at java.io.PrintStream.write(PrintStream.java:480)
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
        at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
        at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
        at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
        at java.io.PrintStream.write(PrintStream.java:527)
        at java.io.PrintStream.print(PrintStream.java:669)
        at java.io.PrintStream.println(PrintStream.java:806)
        at StackOverflowErrorExample.recursivePrint(StackOverflowErrorExample.java:4)
        at StackOverflowErrorExample.recursivePrint(StackOverflowErrorExample.java:9)
        at StackOverflowErrorExample.recursivePrint(StackOverflowErrorExample.java:9)
        at StackOverflowErrorExample.recursivePrint(StackOverflowErrorExample.java:9)
        ...

В зависимости от начальной конфигурации JVM результаты могут отличаться, но в конечном итоге следует вызывать StackOverflowError. Этот пример является очень хорошим примером того, как рекурсия может вызвать проблемы, если не выполнять их с осторожностью.

Как работать с StackOverflowError

  1. Простейшим решением является тщательная проверка трассировки стека и обнаружение повторяющегося шаблона номеров строк. Эти номера строк указывают, что код рекурсивно называется. Как только вы обнаружите эти строки, вы должны тщательно проверить свой код и понять, почему рекурсия никогда не заканчивается.
  2. Если вы подтвердили правильность реализации рекурсии, вы можете увеличить размер стека, чтобы разрешить большее количество вызовов. В зависимости от установленной виртуальной машины Java (JVM) размер стека по умолчанию может равняться либо 512 КБ, либо 1 МБ. Вы можете увеличить размер стека потоков, используя флаг -Xss. Этот флаг можно указать либо через конфигурацию проекта, либо через командную строку. Формат аргумента -Xss: -Xss<size>[g|G|m|M|k|K]
48
задан yogman 22 January 2009 в 18:14
поделиться

6 ответов

Просто удалите папку eclipse , где бы она ни находилась

0
ответ дан 7 November 2019 в 12:04
поделиться

На самом деле Eclipse создает другие файлы, не входящие в его каталог, которые выживут при удалении его каталога.

В Snow Leopard посмотрите в учетной записи пользователя на:

  • ~/Library/Caches/org.eclipse.eclipse
  • ~/Library/Preferences/org.eclipse.eclipse.plist

Не уверен, нужно ли вам включать просмотр скрытых файлов, чтобы их увидеть.

69
ответ дан 7 November 2019 в 12:04
поделиться

BTW. AppZapper является большим инструментом OSX для удаления приложений и их предпочтений.

Это иногда прибывает часть MacHeist

2
ответ дан Fortyrunner 7 November 2019 в 22:04
поделиться

Никакая потребность удалить что-либо, можно просто удалить затмение / папка, но необходимо также использовать новую рабочую область или удалить workspace/.metadata папку.

14
ответ дан Fabian Steeg 7 November 2019 в 22:04
поделиться

Удаление папки затмения эквивалентно удалению его. На самом деле, если Вы не хотите вмешиваться в существующую установку, можно создать другой экземпляр затмения и выполнения от нового местоположения.

3
ответ дан neesh 7 November 2019 в 22:04
поделиться

Eclipse не оказывает влияния на Mac OS вне его каталог, таким образом, нет никакого удаления задач.

я думаю, что то, С чем Вы сталкиваетесь, является результатом Eclipse, переключающего сменную систему распределения недавно. Существует теперь два избыточных и не очень совместимые средства установки плагинов. Это - полная путаница. Можно быть более обеспечены (если возможный) установка более поздней версии Eclipse (возможно, даже эти 3,5 этапа), поскольку они, кажется, более стабильны в том отношении.

3
ответ дан Uri 7 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

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