btraceÊÇsunÍÆ³öµÄÒ»¿îjavaÐÔÄÜ¼à¿Ø¹¤¾ß£¬ÀûÓÃjava agent ºÍ jvm attach¼¼Êõ£¬¿ÉÒÔ²»Í£»úµÄÇé¿öÏÂ¼à¿ØÏßÉÏÇé¿ö£¬²¢ÇÒ×öµ½×îÉÙµÄÇÖÈ룬ռÓÃ×îÉÙµÄϵͳ×ÊÔ´¡£
Ïêϸ¼û¹Ù·½Îĵµ
ÁíÍâbtraceÓкÜÑϸñµÄÏÞÖÆ£¬±ÈÈçÆ´½Ó×Ö·û´®¡¢Ñ»·¡¢µÝ¹é¡¢ÒÔ¼°ÎÒÃÇÆ½Ê±¾³£ÓõÄһЩ·½·¨¶¼²»¿ÉÒÔÓã¬ËûÓÐËû×Ô¼º×¨ÃŵÄÀà¿â¡£
btrace»¹ÌṩÁËVisualVM Plugin ÒÔ¼°Netbeans Plugin¡£
¾ßÌåʹÓÃÈçÏ¡£
1.ÏÂÔØbtrace°ü http://kenai.com/projects/btrace/downloads/directory/releases¡£
2.ÉèÖû·¾³±äÁ¿¡£
3.¶¨ÖÆ×Ô¼ºÐèÒªµÄ½Å±¾¡£
4.jpsÃüÁî²é³öÐèÒª¼à¿ØµÄjvm pid¡£
5.µ÷ÓÃÃüÁî btrace <pid> <×Ô¼º¶¨ÖƵĽű¾> <Êä³öÎļþ> eg£ºbtrace 3045 PrintExecuteTime.java > time.log
ÎÒ¾³£Ê¹ÓõŦÄÜÒ»ÊÇ¼à¿ØÄ³Ð©·½·¨µÄºÄʱ£¬¶þÊDz鿴ijЩ·½·¨µÄ²ÎÊýÖµ£¬ÈýÊÇ¼à¿ØÄÚ´æÊ¹ÓÃÇé¿ö¡£
½Å±¾¾ÙÀýÈçÏÂ
1.¼à¿Ø·½·¨²ÎÊý£¨Êý×飩
Java´úÂë
import static com.sun.btrace.BTraceUtils.print;
import static com.sun.btrace.BTraceUtils.printArray;
import static com.sun.btrace.BTraceUtils.println;   ......
ºÜ¼òµ¥µÄСÀý×Ó£¬ÊʺϳõѧÕßÀí½â
1£¬JavaFlex.java
package flex;
public class JavaFlex {
public String helloJavaFlex(String name) {
return name;
}
}
2£¬remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true" />
</adapters>
<default-channels>
<channel ref="my-amf" />
</default-channels>
<destination id="firstJavaFlex">
<properties>
<source>flex.JavaFlex
</source>
</properties>
</destination>
</service>
3£¬testflex.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" ......
ºÜ¼òµ¥µÄСÀý×Ó£¬ÊʺϳõѧÕßÀí½â
1£¬JavaFlex.java
package flex;
public class JavaFlex {
public String helloJavaFlex(String name) {
return name;
}
}
2£¬remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true" />
</adapters>
<default-channels>
<channel ref="my-amf" />
</default-channels>
<destination id="firstJavaFlex">
<properties>
<source>flex.JavaFlex
</source>
</properties>
</destination>
</service>
3£¬testflex.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" ......
ÔÚ¿ª·¢ÏîÄ¿¹¤³Ìʱ£¬¾³£»áÓöµ½±£´æÄ³Ð©Öµ·Åµ½ÏµÍ³µÄcacheÖУ¬ÏÖÓÃCache.javaºÍCacheManager.javaÀ´¹ÜÀí¡£¾ßÌå´úÂë·Ö±ðÈçÏ£º
public class Cache {
private String key;
private Object value;
private long timeOut;
private boolean expired;
public Cache() {
super();
}
public Cache(String key, String
value, long timeOut, boolean expired) {
this.key = key;
& ......
1. socketͨÐÅ£ºÓпͻ§¶ËºÍ·þÎñ¶ËµÄsocket´úÂë¡£
2.
¶àỊ̈߳º¿Í»§¶ËºÍ·þÎñ¶Ë¸÷ÓÃÒ»Ï̷߳¢ËÍÐÅÏ¢£»·þÎñ¶ËÁíÓÐÒ»¼àÌýỊ̈߳¬ÓÃÓڰѳ¬Ê±µÄÐÅϢɾ³ý¡£
ÕâÀïÓ¦Óõ½ÁËͬ²½£¬Ê¹Á½¸öÏ߳̿ÉÒÔ²Ù×÷ͬһ¸ömap¡£
´úÂ룺£¨ÀàÈ«ÔÚͬһ¸ö°üÄÚ£©
server¶Ë£º
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
public class ServerNet {
// ÒÔºÁÃëΪµ¥Î»
private final static long timeLimit = 10000 ;
private Map<String,String> map = Collections.synchronizedMap(new HashMap<String,String>());
public void ServerSocketNet(){
try{
ServerSocket ss = new ServerSocket(6060);
Socket s = ss.accept();
// ÓÃÓÚ»ñÈ¡¿Í»§¶Ë´«ÊäÀ´µÄÐÅÏ¢
BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
// ÓÃÓÚ»ñÈ¡·þÎñ¶Ë×¼±¸ÏìÓ ......
Êܵ½“15ÄêÄã»ýÀÛÁËʲô”Ò»ÎĵÄÕ𶯣¬ÌرðÊÕ¼¯¸ÃÎÄѧϰ
Java gc
¹Ø¼ü×Ö: java gc, À¬»ø»ØÊÕ»úÖÆ
1.JVMµÄgc¸ÅÊö
¡¡¡¡gc¼´À¬»øÊÕ¼¯»úÖÆÊÇÖ¸jvmÓÃÓÚÊÍ·ÅÄÇЩ²»ÔÙʹÓõĶÔÏóËùÕ¼ÓõÄÄÚ´æ¡£javaÓïÑÔ²¢²»ÒªÇójvmÓÐgc£¬Ò²Ã»Óй涨gcÈçºÎ¹¤×÷¡£²»¹ý³£ÓõÄjvm¶¼ÓÐgc£¬¶øÇÒ´ó¶àÊýgc¶¼Ê¹ÓÃÀàËÆµÄËã·¨¹ÜÀíÄÚ´æºÍÖ´ÐÐÊÕ¼¯²Ù×÷¡£
¡¡¡¡ÔÚ³ä·ÖÀí½âÁËÀ¬»øÊÕ¼¯Ëã·¨ºÍÖ´Ðйý³Ìºó£¬²ÅÄÜÓÐЧµÄÓÅ»¯ËüµÄÐÔÄÜ¡£ÓÐЩÀ¬»øÊÕ¼¯×¨ÓÃÓÚÌØÊâµÄÓ¦ÓóÌÐò¡£±ÈÈ磬ʵʱӦÓóÌÐòÖ÷ÒªÊÇΪÁ˱ÜÃâÀ¬»øÊÕ¼¯Öжϣ¬¶ø´ó¶àÊýOLTPÓ¦ÓóÌÐòÔò×¢ÖØÕûÌåЧÂÊ¡£Àí½âÁËÓ¦ÓóÌÐòµÄ¹¤×÷¸ººÉºÍjvmÖ§³ÖµÄÀ¬»øÊÕ¼¯Ëã·¨£¬±ã¿ÉÒÔ½øÐÐÓÅ»¯ÅäÖÃÀ¬»øÊÕ¼¯Æ÷¡£
¡¡¡¡À¬»øÊÕ¼¯µÄÄ¿µÄÔÚÓÚÇå³ý²»ÔÙʹÓõĶÔÏó¡£gcͨ¹ýÈ·¶¨¶ÔÏóÊÇ·ñ±»»î¶¯¶ÔÏóÒýÓÃÀ´È·¶¨ÊÇ·ñÊÕ¼¯¸Ã¶ÔÏó¡£gcÊ×ÏÈÒªÅжϸöÔÏóÊÇ·ñÊÇʱºò¿ÉÒÔÊÕ¼¯¡£Á½ÖÖ³£Óõķ½·¨ÊÇÒýÓüÆÊýºÍ¶ÔÏóÒýÓñéÀú¡£
¡¡¡¡1.1.ÒýÓüÆÊý
¡¡¡¡ÒýÓüÆÊý´æ´¢¶ÔÌØ¶¨¶ÔÏóµÄËùÓÐÒýÓÃÊý£¬Ò²¾ÍÊÇ˵£¬µ±Ó¦ÓóÌÐò´´½¨ÒýÓÃÒÔ¼°ÒýÓó¬³ö·¶Î§Ê±£¬jvm±ØÐëÊʵ±Ôö¼õÒýÓÃÊý¡£µ±Ä³¶ÔÏóµÄÒýÓÃÊýΪ0ʱ£¬±ã¿ÉÒÔ½øÐÐÀ¬»øÊÕ¼¯¡£
¡¡¡¡1.2.¶ÔÏóÒýÓñéÀú
¡¡¡¡ÔçÆÚµÄjvmʹÓÃÒýÓüÆÊý£¬ÏÖÔÚ´ó¶àÊýjvm²ÉÓöÔÏóÒ ......
½ñÌì¼ÌÐøÑ§Ï°javaºÍandroidƽ̨ javaµÄѧϰËãÊDz¹³ä£¬ÒòΪûÓÐjava»ù´¡Ò²×ö²»³öʲô¶«Î÷À´
½ñÌì¿´µ½javaÓÃthis¹Ø¼ü×ÖÀ´ÖØÔع¹Ôì·½·¨£¬ÔÚÕâÀï×ö¸ö±Ê¼Çclass a_sample{
public int x,y.z;
a_sample(int x){
this.x=x;
}
a_sample(int x,int y){
this(x);
this.y=y;
}
a_sample(int x,int y,int z){
this(x);
this(y);
this.z=z;
}
}
Õâ¸ö·½·¨±È½ÏºÃÓã¡£¡×¢ÒâÒ»¶¨ÊÇÔÚµÚÒ»¾ä
¿´µ½thisÓÖ¸´Ï°ÁËÒ»ÏÂc++ÀïÃæµÄthisÖ¸Õë
ĬдһÏÂgccµÄ²ÎÊýÓ÷¨
Ö÷Îļþmain.c ¶¯Ì¬¿â´úÂëÎļþhello.c Í·Îļþhello.h
¶¯Ì¬¿âÎļþÉú³É¶¯Ì¬¿â gcc -shared hello.c -o libhello.so
Ö÷ÎļþµÄ±àÒë gcc main.c -lhello -L. -o main
(ÓÃcygwin .dll£¬main.c hello.hÊÇÔÚͬһĿ¼ÏÂ-LÊÇ·¾¶)
sqliteº¯Êý
sqlite3_exec(
sqlite3 *,
const char *,
int (*callback)(void*,int,char**,char**),
char **error_msg
)
callbackµÄ²ÎÊý
µÚÒ»¸öûÓÃ
µÚ¶þ¸öÁÐÊý
µÚÈý¸öchar ......
½ñÌì¼ÌÐøÑ§Ï°javaºÍandroidƽ̨ javaµÄѧϰËãÊDz¹³ä£¬ÒòΪûÓÐjava»ù´¡Ò²×ö²»³öʲô¶«Î÷À´
½ñÌì¿´µ½javaÓÃthis¹Ø¼ü×ÖÀ´ÖØÔع¹Ôì·½·¨£¬ÔÚÕâÀï×ö¸ö±Ê¼Çclass a_sample{
public int x,y.z;
a_sample(int x){
this.x=x;
}
a_sample(int x,int y){
this(x);
this.y=y;
}
a_sample(int x,int y,int z){
this(x);
this(y);
this.z=z;
}
}
Õâ¸ö·½·¨±È½ÏºÃÓã¡£¡×¢ÒâÒ»¶¨ÊÇÔÚµÚÒ»¾ä
¿´µ½thisÓÖ¸´Ï°ÁËÒ»ÏÂc++ÀïÃæµÄthisÖ¸Õë
ĬдһÏÂgccµÄ²ÎÊýÓ÷¨
Ö÷Îļþmain.c ¶¯Ì¬¿â´úÂëÎļþhello.c Í·Îļþhello.h
¶¯Ì¬¿âÎļþÉú³É¶¯Ì¬¿â gcc -shared hello.c -o libhello.so
Ö÷ÎļþµÄ±àÒë gcc main.c -lhello -L. -o main
(ÓÃcygwin .dll£¬main.c hello.hÊÇÔÚͬһĿ¼ÏÂ-LÊÇ·¾¶)
sqliteº¯Êý
sqlite3_exec(
sqlite3 *,
const char *,
int (*callback)(void*,int,char**,char**),
char **error_msg
)
callbackµÄ²ÎÊý
µÚÒ»¸öûÓÃ
µÚ¶þ¸öÁÐÊý
µÚÈý¸öchar ......