StackOverflowError на 32-битной машине при загрузке большого файла ARXML в java

Я пытаюсь создать и загрузить файл ARXML с помощью java SE 8 на 32-разрядной машине.

ifile.create(inputStreamObj, true, null);
ModelLoadManager.INSTANCE.loadFile(ifile, false, null);

При загрузке файла ARXML я получаю следующее исключение:

!ENTRY org.eclipse.core.jobs 4 2 2018-05-11 14:36:03.520
!MESSAGE An internal error occurred during: "Loading Model Resources".
!STACK 0
java.lang.StackOverflowError
    at java.io.InputStream.<init>(Unknown Source)
    at java.util.zip.ZipFile$ZipFileInputStream.<init>(Unknown Source)
    at java.util.zip.ZipFile.getInputStream(Unknown Source)
    at org.eclipse.osgi.storage.bundlefile.ZipBundleEntry.getInputStream(ZipBundleEntry.java:59)
    at org.eclipse.osgi.storage.bundlefile.BundleEntry.getBytes(BundleEntry.java:90)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:566)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:538)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:525)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:273)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:632)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:586)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:538)
    at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:525)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at autosar40.diagnosticextract.dem.diagnosticevent.DiagnosticeventFactory.<clinit>(DiagnosticeventFactory.java:41)
    at autosar40.diagnosticextract.dem.diagnosticevent.impl.DiagnosticeventPackageImpl.<init>(DiagnosticeventPackageImpl.java:1103)
    at autosar40.diagnosticextract.dem.diagnosticevent.impl.DiagnosticeventPackageImpl.init(DiagnosticeventPackageImpl.java:1157)
    at autosar40.diagnosticextract.dem.diagnosticevent.DiagnosticeventPackage.<clinit>(DiagnosticeventPackage.java:84)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnosticoperationcycle.impl.DiagnosticoperationcyclePackageImpl.init(DiagnosticoperationcyclePackageImpl.java:1342)
    at autosar40.diagnosticextract.dem.diagnosticoperationcycle.DiagnosticoperationcyclePackage.<clinit>(DiagnosticoperationcyclePackage.java:82)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnosticaging.impl.DiagnosticagingPackageImpl.init(DiagnosticagingPackageImpl.java:1323)
    at autosar40.diagnosticextract.dem.diagnosticaging.DiagnosticagingPackage.<clinit>(DiagnosticagingPackage.java:78)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnostictroublecode.impl.DiagnostictroublecodePackageImpl.init(DiagnostictroublecodePackageImpl.java:1453)
    at autosar40.diagnosticextract.dem.diagnostictroublecode.DiagnostictroublecodePackage.<clinit>(DiagnostictroublecodePackage.java:82)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnosticdebouncingalgorithm.impl.DiagnosticdebouncingalgorithmPackageImpl.init(DiagnosticdebouncingalgorithmPackageImpl.java:1331)
    at autosar40.diagnosticextract.dem.diagnosticdebouncingalgorithm.DiagnosticdebouncingalgorithmPackage.<clinit>(DiagnosticdebouncingalgorithmPackage.java:80)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnosticfreezeframe.impl.DiagnosticfreezeframePackageImpl.init(DiagnosticfreezeframePackageImpl.java:1338)
    at autosar40.diagnosticextract.dem.diagnosticfreezeframe.DiagnosticfreezeframePackage.<clinit>(DiagnosticfreezeframePackage.java:82)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.dem.diagnosticextendeddatarecord.impl.DiagnosticextendeddatarecordPackageImpl.init(DiagnosticextendeddatarecordPackageImpl.java:1329)
    at autosar40.diagnosticextract.dem.diagnosticextendeddatarecord.DiagnosticextendeddatarecordPackage.<clinit>(DiagnosticextendeddatarecordPackage.java:81)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.commondiagnostics.impl.CommondiagnosticsPackageImpl.init(CommondiagnosticsPackageImpl.java:1432)
    at autosar40.diagnosticextract.commondiagnostics.CommondiagnosticsPackage.<clinit>(CommondiagnosticsPackage.java:83)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.diagnosticextract.swmapping.impl.SwmappingPackageImpl.init(SwmappingPackageImpl.java:1317)
    at autosar40.diagnosticextract.swmapping.SwmappingPackage.<clinit>(SwmappingPackage.java:78)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.featuremodel.impl.FeaturemodelPackageImpl.init(FeaturemodelPackageImpl.java:1455)
    at autosar40.featuremodel.FeaturemodelPackage.<clinit>(FeaturemodelPackage.java:88)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.autosartoplevelstructure.impl.AutosartoplevelstructurePackageImpl.init(AutosartoplevelstructurePackageImpl.java:1324)
    at autosar40.autosartoplevelstructure.AutosartoplevelstructurePackage.<clinit>(AutosartoplevelstructurePackage.java:79)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.standardization.abstractblueprintstructure.impl.AbstractblueprintstructurePackageImpl.init(AbstractblueprintstructurePackageImpl.java:1371)
    at autosar40.standardization.abstractblueprintstructure.AbstractblueprintstructurePackage.<clinit>(AbstractblueprintstructurePackage.java:81)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown Source)
    at sun.reflect.ReflectionFactory.newFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.acquireFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.getFieldAccessor(Unknown Source)
    at java.lang.reflect.Field.get(Unknown Source)
    at org.eclipse.emf.ecore.plugin.RegistryReader$EPackageDescriptor.getEPackage(RegistryReader.java:275)
    at org.eclipse.emf.ecore.impl.EPackageRegistryImpl.getEPackage(EPackageRegistryImpl.java:127)
    at autosar40.standardization.clientserverinterfacetobswmoduleentrymapping.impl.ClientserverinterfacetobswmoduleentrymappingPackageImpl.init(ClientserverinterfacetobswmoduleentrymappingPackageImpl.java:1329)
    at autosar40.standardization.clientserverinterfacetobswmoduleentrymapping.ClientserverinterfacetobswmoduleentrymappingPackage.<clinit>(ClientserverinterfacetobswmoduleentrymappingPackage.java:80)
    at sun.misc.Unsafe.ensureClassInitialized(Native Method)
    at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(Unknown

Я пробовал с разными значениями -xss, такими как 320k, 520k, 600k, 1024k, 256k, 1m, 2m и 10m, но без толку.

Мой файл eclipse.ini выглядит следующим образом:

-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.401.v20161122-1740
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
--launcher.XXMaxPermSize
512m
-vmargs
-Xss1m
-XX:MaxPermSize=256m
-Xms128m
-Xmx1000m

Тот же код отлично работает на 64-битной машине через рабочую область, но на 32-битной машине у меня возникает проблема. Может у кого-нибудь есть решение для этого?

Откройте конфигурацию запуска для приложения Java, затем на вкладке аргументов появится текстовое поле аргументов виртуальной машины, напишите -Xss1m, это увеличит размер вашего стека.

Adya 11.05.2018 11:22

Большое спасибо, Адья ....

sc560 11.05.2018 12:28

он работает нормально.

sc560 11.05.2018 12:28

Но я установил -xss1m в файле eclipse.ini, но это не сработало

sc560 11.05.2018 12:30

в любом случае большое спасибо Адья

sc560 11.05.2018 12:31

Проголосуйте за комментарий, если можете

Adya 11.05.2018 12:33

Очистить форматирование

DarthJDG 11.05.2018 13:18

Имейте в виду, что -XX:+UseG1GC рекомендуется хранить только в кучах размером> 4 ГБ. Другие сборщики мусора (parallel / cms) могут быть более предпочтительными в зависимости от вашей ситуации. Но держу пари, что параллель должна быть вашим выбором, если вы не можете решить, какой из них использовать.

Cargeh 11.05.2018 13:24

Кроме того, теоретически максимальная куча для 32-битной JVM составляет 4G, независимо от того, сколько у него оперативной памяти. @Adya

Cargeh 11.05.2018 13:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
98
0

Другие вопросы по теме