Showing posts with label coding. Show all posts
Showing posts with label coding. Show all posts

Saturday, November 24, 2012

JVM Memory management: Garbage Collection



Most of the questions related to memory would have been answered by the image above. There are two and only two major partitions in JVM memory, Heap and Non-Heap. All the other type of memory space or pools we have heard belong to either of these two. Java specification does not enforce any specific implementation of memory, it depends on JVM implementation. The JVM of Oracle is named HotSpot.


Young Generation:
Here garbage collection is frequent and less expensive.
Eden Space: Initially all objects created here.
Survivor space: Contains objects that survived garbage collection in Eden Space

Old Generation:
Here garbage collection is less frequent and expensive.
Tenured Space: The objects survived the garbage collection get moved here.
PermGen: Contains meta data of the virtual machine, class and method objects.

Garbage Collector:
It is a low priority daemon thread. It frees memory of any object that is not reachable from a live thread. We can suggest JVM to do garbage collection by calling Runtime.getRuntime().gc() or System.gc() which internally calls Runtime.getRuntime().gc(). Runtime is singleton. We can configure type of garbage collector to be used by passing command line arguments to JVM. For more details on garbage collection http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html 

To configure stack memory  -Xss1m
To configure heap memory  -Xmx512m -XX:MaxPermSize=256m



Sunday, August 26, 2012

Advantage of distraction


Mid term exam is approaching, I need an excuse to procrastinate studying. I wanted a countdown timer that shows me how much time left for preparation and how many hours required per day. I could not find easily, so made a small HTML5 gadget. It works offline, and only offline as of now.

 Advantage of distraction is that I learned how to make the HTML5 gadget work offline. Also how to make a windows sidebar gadget, as the initial ideas was to make a windows gadget.

Here is how to develop a Windows sidebar gadget. http://msdn.microsoft.com/en-us/library/windows/desktop/bb456468%28v=vs.85%29.aspx

It's easy to make a web page work offline. Below is the code, write that in the page you want to make work offline.

<html manifest="cache-manifest">

Now create the manifest file with name "cache-manifest" and write the below code in it

CACHE MANIFEST
page1.html
my-script.js


And finally how to write HTML code inside a blog post :)

Wednesday, September 28, 2011

My Logger is ready to use

This is your personal assistant and stays online 24x7x365.

My Logger(mylogger@followinstinct.com) is ready to use. It is a chat bot that you can add to your gmail or any XMPP based mail account. Once your account is active, you can save info with a tag and can retrieve it later by tag. IM is the simplest way to access and store information.

Signup Instructions:
  1. Invite mylogger@followinstinct.com to your chat account. It can be gmail or any XMPP based account. Thats it, you don't need to install any software or do any registration..
After your account is active. Instruction to use the application:
  1. To save data see the below example
    movie: Inception
    Here movie is the tag and Inception is the info to be saved. You can add any number of info to a single tag.
  2. To retrieve data by tag see the below example
    L movie
    Here you will get all the info associated wit the tag 'movie'.
  3. To retrieve all info irrespective of tag see below example
    L
    Yes, just l. It will list all the information you have saved.
  4. To retrieve all tags
    tags
  5. To remove the last information you entered
    undo
    You can keep doing undo any number of times, there is no limitation. Be warned there is NO REDO.
This project is not complete. Please send me your comments and suggestions at support@followinstinct.com.

Sunday, June 26, 2011

Artifact creator, maven command generator

I have written this program for my own requirement. I feel it is a generic one. I have written a test program for adding a new feature, now I want to add that feature to my real application. I need to find what are the additional jars used, and create pom dependencies. This programs takes 2 required parameters and 1 optional parameter. Click here to download.

Parameter list
  1. Source1: Path to lib folder of the test program(required).
  2. Source2: Path to lib folder of the real program(required).
  3. Pom: Path where the output will be printed(optional), output can be seen from console.
Features
  1. List of jars available with same version.
  2. List of jars available with different version.
  3. Maven command for installing the new jars into maven repository.
Here is the command to use this program

java -jar artifact-creator-0.5.jar -s1 /path/of/lib/folder/of/test/program -s2 /path/of/lib/folder/of/real/program -pom /path/of/file/where/output/printed/optional

Sunday, October 25, 2009

Fixed Record file parser

/**
* This functions takes one line of fixed record file as sting and returns
* array of fields
*
* @author Kisor Biswal
* @param string
* @return
*/
private String[] splitter(String string) {
// Lets get the string by space
String[] subStrings = string.split(" ");
// Oh we have to consider the the spaces inside, Okay no problem we will
// joint these back
List finalResult = new ArrayList();
List tempStrings = new ArrayList();
boolean isFirst = false;
for (String s : subStrings) {
// Do the string contain double quote?
if (s.contains("\"")) {
// Yes, Lets check if first time
if (!isFirst) {
// Yes, add the sting to temp list and go ahead
tempStrings.add(s);
isFirst = true;
} else {
// No, Ok now time to concatenate all temp strings and
// append to final result list
tempStrings.add(s);
StringBuffer buffer = new StringBuffer();
for (String ts : tempStrings) {
buffer.append(ts);
// Put space back
if (!ts.endsWith("\"")) {
buffer.append(" ");
}
}
finalResult.add(buffer.toString().replace("\"", ""));
// Now just toggle the

isFirst = false;

}

} else if (isFirst) {
// Yes, add the sting to temp list and go ahead
tempStrings.add(s);
} else {
finalResult.add(s);
}

}
return finalResult.toArray(new String[finalResult.size()]);
}

Friday, August 21, 2009

PWC6033: Unable to compile class for JSP

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
at org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:105)
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:924)


org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP


at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:107)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:280)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:347)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:400)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:477)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:371)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.mortbay.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

SOLUTION worked for me

adding tools.jar(/usr/lib/jvm/java-6-sun-1.6.0.14/lib/tools.jar) to class path.