Reputation: 311
For my project I want to read yml file in matlab using YAMLMatlab. My .yml files look like this. I am ust showing a part of .yml file. My file is around 29 MB.
%YAML:1.0
Block size: [ 16, 16 ]
Block stride: [ 8, 8 ]
Cell size: [ 8, 8 ]
block hist size: 36
block per img: [ 63, 63 ]
Total elements in array: 142884
nbins: 9
Scale: 1.
Level: 0
Width: 512
Height: 512
features:
- 1.5302167832851410e-01
- 1.0552208870649338e-01
- 1.6659785807132721e-01
- 2.3539969325065613e-01
- 2.0810306072235107e-01
- 1.2627227604389191e-01
- 8.0759152770042419e-02
- 6.4930714666843414e-02
- 6.1364557594060898e-02
- 2.1614919602870941e-01
- 1.4714729785919189e-01
While reading .yml file I got the following error.
Error using ReadYamlRaw>load_yaml (line 78)
Java exception occurred:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at org.yaml.snakeyaml.reader.StreamReader.<init>(StreamReader.java:51)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
Error in ReadYamlRaw (line 42)
result = load_yaml(filename, nosuchfileaction, treatasdata);
Error in ReadYaml (line 48)
ry = ReadYamlRaw(filename, 0, nosuchfileaction, treatasdata);
Error in untitled (line 2)
YamlStruct = ReadYaml(yaml_file);
I believe this error is due to large file size as I can read simple .yml file. Can someone help me to resolve this error. I have also read this post.
P.S: Here is .yml file
EDIT:
It works with below answer but I got the following error now. Once I remover %YAML:1.0
. It works fine.
Error using ReadYamlRaw>load_yaml (line 78)
Java exception occurred:
while scanning a directive
in "<string>", line 1, column 1:
%YAML:1.0
^
expected alphabetic or numeric character, but found :(58)
in "<string>", line 1, column 6:
%YAML:1.0
^
at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirectiveName(ScannerImpl.java:1028)
at org.yaml.snakeyaml.scanner.ScannerImpl.scanDirective(ScannerImpl.java:990)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchDirective(ScannerImpl.java:534)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:251)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179)
at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:198)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
Error in ReadYamlRaw (line 42)
result = load_yaml(filename, nosuchfileaction, treatasdata);
Error in ReadYaml (line 48)
ry = ReadYamlRaw(filename, 0, nosuchfileaction, treatasdata);
Error in untitled (line 2)
YamlStruct = ReadYaml(yaml_file);
Upvotes: 0
Views: 815
Reputation: 24127
In MATLAB, select Preferences from the menu/toolstrip. Find the section MATLAB>General>Java Heap Memory, and increase the Java heap size.
You'll need to restart MATLAB after changing this setting for it to take effect.
Upvotes: 3