यह मेरा स्रोत कोड Main.java है। यह neo4j-apoc-1.0 उदाहरणों से पकड़ा गया था। संशोधन के लक्ष्य को 2 नोड्स के 1M रिकॉर्ड और 1 संबंध स्टोर करने के लिए:Neo4j OutOfMemory समस्या
package javaapplication2;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.kernel.EmbeddedGraphDatabase;
public class Main
{
private static final String DB_PATH = "neo4j-store-1M";
private static final String NAME_KEY = "name";
private static enum ExampleRelationshipTypes implements RelationshipType
{
EXAMPLE
}
public static void main(String[] args)
{
GraphDatabaseService graphDb = null;
try
{
System.out.println("Init database...");
graphDb = new EmbeddedGraphDatabase(DB_PATH);
registerShutdownHook(graphDb);
System.out.println("Start of creating database...");
int valIndex = 0;
for(int i=0; i<1000; ++i)
{
for(int j=0; j<1000; ++j)
{
Transaction tx = graphDb.beginTx();
try
{
Node firstNode = graphDb.createNode();
firstNode.setProperty(NAME_KEY, "Hello" + valIndex);
Node secondNode = graphDb.createNode();
secondNode.setProperty(NAME_KEY, "World" + valIndex);
firstNode.createRelationshipTo(
secondNode, ExampleRelationshipTypes.EXAMPLE);
tx.success();
++valIndex;
}
finally
{
tx.finish();
}
}
}
System.out.println("Ok, client processing finished!");
}
finally
{
System.out.println("Shutting down database ...");
graphDb.shutdown();
}
}
private static void registerShutdownHook(final GraphDatabaseService graphDb)
{
// Registers a shutdown hook for the Neo4j instance so that it
// shuts down nicely when the VM exits (even if you "Ctrl-C" the
// running example before it's completed)
Runtime.getRuntime().addShutdownHook(new Thread()
{
@Override
public void run()
{
graphDb.shutdown();
}
});
}
}
कुछ पुनरावृत्तियों के बाद (150K के आसपास) मैं त्रुटि संदेश मिला:
"java.lang.OutOfMemoryError: जावा ढेर अंतरिक्ष java.nio.HeapByteBuffer पर। (HeapByteBuffer.java:39) java.nio.ByteBuffer.allocate (ByteBuffer.java:312) org.neo4j.kernel.impl.nioneo.store.PlainPersistenceWindow पर। (PlainPersistenceWindow.java : 30) org.neo4j.kernel.impl.nioneo.store.PersistenceWindowPool.allocateNewWindow (PersistenceWindowPool.java:5234) org.ne पर o4j.kernel.impl.nioneo.store.PersistenceWindowPool.refreshBricks (PersistenceWindowPool.java:430) org.neo4j.kernel.impl.nioneo.store.PersistenceWindowPool.acquire (PersistenceWindowPool.java:122) पर org.neo4j पर । kernel.impl.nioneo.store.CommonAbstractStore.acquireWindow (CommonAbstractStore.java:459) org.neo4j.kernel.impl.nioneo.store.AbstractDynamicStore.updateRecord (AbstractDynamicStore.java4040) org.neo4j. कर्नेल पर। impl.nioneo.store.PropertyStore.updateRecord (PropertyStore.java:209) org.neo4j.kernel.impl.nioneo.xa.Command $ PropertyCommand.execute (Command.java:5213) org.neo4j.kernel पर। impl.nioneo.xa.NeoTransaction.doCommit (NeoTransaction.java:443) org.neo4j.kernel.impl.transaction.xaframework.XaTransaction.commit (XaTransaction.java:316)org.neo4j.kernel.impl.transaction.xaframework.XaResourceHelpImpl.commit (XaResourceHelpImpl.java:64) पर org.neo4j.kernel.impl.transaction.xaframework.XaResourceManager.commit (XaResourceManager.java:399) परपर org.neo4j.kernel.impl.transaction.TransactionImpl.doCommit (TransactionImpl.javaoci14) org.neo4j.kernel.impl.transaction.TxManager.commit (TxManager.java:5271) org.neo4j.kernel पर। impl.transaction.TxManager.commit (TxManager.java:5243) org.neo4j.kernel.impl.transaction.TransactionImpl.commit (TransactionImpl.java:102) org.neo4j.kernel.EmbeddedGraphDbImpl $ TransactionImpl.finish (एम्बेडेड GraphDbImpl.java:329) javaapplication2.Main.main (Main.java:62) 28.05.2010 9:52:14 org.neo4j.kernel.impl .nioneo.store.PersistenceWindowPool logWarn चेतावनी: [neo4j-दुकान-1M \ neostore.propertystore.db.strings] प्रत्यक्ष बफर "
दोस्तों आवंटित करने में असमर्थ! मुझे मदद करें, मैंने क्या गलत किया, मैं इसे कैसे सुधार सकता हूं? मंच विंडोज एक्सपी 32 बिट एसपी 3 पर परीक्षण किया। सृजन कस्टम विन्यास के भीतर शायद समाधान?
thnx 4 प्रत्येक सलाह!
आरंभ करने के लिए, बाहरी लूप में लेनदेन को स्थानांतरित करने से गति बहुत बढ़ जाती है। फिर वहां [बैच इंसर्टर] है (http://wiki.neo4j.org/content/Batch_Insert)। कुछ [कॉन्फ़िगरेशन सेटिंग्स] हैं (http://wiki.neo4j.org/content/Configuration_Settings) आप आवेदन कर सकते हैं। फिर भी, मुझे नहीं पता कि इस मामले में त्रुटि क्या हो रही है (लेकिन ऐसा लगता है कि विंडोज से संबंधित, लिनक्स का उपयोग करके इसकी पुष्टि नहीं कर सका)। – nawroth