2015-05-12 1 views
0

Я начинаю использовать инфраструктуру Thrift, основные примеры успешны, только когда я пытаюсь сделать приложение, больше методов возникает ошибка java.lang.OutOfMemoryError. Ниже исключения.java.lang.OutOfMemoryError ошибка возникает в Thrift в Java

Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java 
heap space org.apache.thrift.TApplicationException: connecting failed: 
out of sequence response 
at org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:379) 
at org.apache.thrift.protocol.TBinaryProtocol.readString(TBinaryProtocol.java:374) 
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:225) 
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27) 
at br.com.gadje.servico.client.CollectorReceiver.run(CollectorReceiver.java:32) 
at java.lang.Thread.run(Thread.java:745) 

Я начала на стороне клиента TTransport следующим образом:

TTransport transport = new TSocket (server, port); 
Protocol protocol = new TBinaryProtocol (transport); 
+1

Вы пытаетесь запустить JVM с большим выделением памяти? – Kon

+0

java -Xms = 512m -Xmx = 512m. Используйте значение, соответствующее вашим потребностям. – Dagriel

+0

Я задаю JVM Xmx и Xms. Глядя на код Ошибка Thrift возникает в TBinaryProtocol классе в методе readStringBody, когда он будет инициализировать байтовый вектор. Я не знаю, почему, но размер, передаваемый при запуске, слишком велик. –

ответ

0

я заметил, что OutOfMemoryError происходит, когда ваш сервер использует TBinaryProtocol но вы пытаетесь получить доступ к нему по-другому, например, используя браузер (который говорит HTTP). Может, это и ваша проблема?

В случае, если вы хотите получить доступ к серверу Java с помощью клиента Javascript, взгляните на этом примере: https://github.com/LukeOwncloud/ThriftJavaJavascriptDemo