attempt to fix a memory leak
This commit is contained in:
parent
1ce343d523
commit
a5692db5b8
@ -19,7 +19,7 @@ is divided into following sections:
|
|||||||
- cleanup
|
- cleanup
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="twitter_techsupportgore_bot-impl">
|
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="TwitterTechSupportGoreBot-impl">
|
||||||
<fail message="Please build using Ant 1.8.0 or higher.">
|
<fail message="Please build using Ant 1.8.0 or higher.">
|
||||||
<condition>
|
<condition>
|
||||||
<not>
|
<not>
|
||||||
@ -450,7 +450,7 @@ is divided into following sections:
|
|||||||
</fileset>
|
</fileset>
|
||||||
</union>
|
</union>
|
||||||
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
|
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
|
||||||
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="twitter_techsupportgore_bot" testname="TestNG tests" workingDir="${work.dir}">
|
<testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="TwitterTechSupportGoreBot" testname="TestNG tests" workingDir="${work.dir}">
|
||||||
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
|
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
|
||||||
<propertyset>
|
<propertyset>
|
||||||
<propertyref prefix="test-sys-prop."/>
|
<propertyref prefix="test-sys-prop."/>
|
||||||
@ -601,7 +601,7 @@ is divided into following sections:
|
|||||||
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
|
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
|
||||||
<isset property="test.method"/>
|
<isset property="test.method"/>
|
||||||
</condition>
|
</condition>
|
||||||
<condition else="-suitename twitter_techsupportgore_bot -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
|
<condition else="-suitename TwitterTechSupportGoreBot -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
|
||||||
<matches pattern=".*\.xml" string="@{testClass}"/>
|
<matches pattern=".*\.xml" string="@{testClass}"/>
|
||||||
</condition>
|
</condition>
|
||||||
<delete dir="${build.test.results.dir}" quiet="true"/>
|
<delete dir="${build.test.results.dir}" quiet="true"/>
|
||||||
@ -893,7 +893,7 @@ is divided into following sections:
|
|||||||
<delete file="${built-jar.properties}" quiet="true"/>
|
<delete file="${built-jar.properties}" quiet="true"/>
|
||||||
</target>
|
</target>
|
||||||
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
|
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
|
||||||
<echo level="warn" message="Cycle detected: twitter_techsupportgore_bot was already built"/>
|
<echo level="warn" message="Cycle detected: TwitterTechSupportGoreBot was already built"/>
|
||||||
</target>
|
</target>
|
||||||
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
|
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
|
||||||
<mkdir dir="${build.dir}"/>
|
<mkdir dir="${build.dir}"/>
|
||||||
@ -1378,7 +1378,7 @@ is divided into following sections:
|
|||||||
<delete file="${built-clean.properties}" quiet="true"/>
|
<delete file="${built-clean.properties}" quiet="true"/>
|
||||||
</target>
|
</target>
|
||||||
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
|
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
|
||||||
<echo level="warn" message="Cycle detected: twitter_techsupportgore_bot was already built"/>
|
<echo level="warn" message="Cycle detected: TwitterTechSupportGoreBot was already built"/>
|
||||||
</target>
|
</target>
|
||||||
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
|
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
|
||||||
<mkdir dir="${build.dir}"/>
|
<mkdir dir="${build.dir}"/>
|
||||||
|
@ -3,6 +3,6 @@ build.xml.script.CRC32=9d82390b
|
|||||||
build.xml.stylesheet.CRC32=8064a381@1.80.1.48
|
build.xml.stylesheet.CRC32=8064a381@1.80.1.48
|
||||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||||
nbproject/build-impl.xml.data.CRC32=3d50692e
|
nbproject/build-impl.xml.data.CRC32=3680b253
|
||||||
nbproject/build-impl.xml.script.CRC32=e587a8e5
|
nbproject/build-impl.xml.script.CRC32=ee04fc0e
|
||||||
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
|
nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
|
||||||
|
@ -32,6 +32,7 @@ import java.sql.DriverManager;
|
|||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Singleton Hypervisor. This is the object that does everything. So we want it
|
* Singleton Hypervisor. This is the object that does everything. So we want it
|
||||||
@ -84,7 +85,7 @@ public class Hypervisor {
|
|||||||
/**
|
/**
|
||||||
* Connection to the SQLITE database.
|
* Connection to the SQLITE database.
|
||||||
*/
|
*/
|
||||||
private final Connection connexion;
|
private Connection connexion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RedditExtractor.
|
* RedditExtractor.
|
||||||
@ -108,13 +109,15 @@ public class Hypervisor {
|
|||||||
this.workingDirectory = reader.getProperties("working_directory");
|
this.workingDirectory = reader.getProperties("working_directory");
|
||||||
setupTheBotDirectory();
|
setupTheBotDirectory();
|
||||||
this.connexion = DriverManager.getConnection("jdbc:sqlite:"
|
this.connexion = DriverManager.getConnection("jdbc:sqlite:"
|
||||||
+ this.workingDirectory + File.separator + this.sqliteDatabase);
|
+ this.workingDirectory + File.separator
|
||||||
|
+ this.sqliteDatabase);
|
||||||
this.myRedditExtractor = new RedditExtractor(subreddit);
|
this.myRedditExtractor = new RedditExtractor(subreddit);
|
||||||
if ("Y".equals(reader.getProperties("clear_database"))) {
|
if ("Y".equals(reader.getProperties("clear_database"))) {
|
||||||
clearDatabase();
|
clearDatabase();
|
||||||
}
|
}
|
||||||
this.maxLength = Integer.valueOf(reader.getProperties("max_text_length"));
|
this.maxLength = Integer.valueOf(reader.getProperties("max_text_length"));
|
||||||
load();
|
load();
|
||||||
|
this.connexion.close();
|
||||||
System.out.println("[+] Hypervisor created successfully.");
|
System.out.println("[+] Hypervisor created successfully.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,13 +155,16 @@ public class Hypervisor {
|
|||||||
InterruptedException {
|
InterruptedException {
|
||||||
System.out.println("[+] Hypervisor is now running.");
|
System.out.println("[+] Hypervisor is now running.");
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
this.connexion = DriverManager.getConnection("jdbc:sqlite:"
|
||||||
|
+ this.workingDirectory + File.separator
|
||||||
|
+ this.sqliteDatabase);
|
||||||
for (RedditPost post : myRedditExtractor.getRedditPosts()) {
|
for (RedditPost post : myRedditExtractor.getRedditPosts()) {
|
||||||
computeRedditPost(post);
|
computeRedditPost(post);
|
||||||
}
|
}
|
||||||
System.out.println("[*] Cleaning memory.");
|
this.connexion.close();
|
||||||
System.gc();
|
|
||||||
System.out.println(
|
System.out.println(
|
||||||
"[*] Hypervisor is waiting for " + this.delay + " seconds.");
|
"[*] Hypervisor is waiting for "
|
||||||
|
+ this.delay + " seconds.");
|
||||||
Thread.sleep(this.delay * 1000);
|
Thread.sleep(this.delay * 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user