自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (4)
  • 收藏
  • 关注

原创 常用的JVM数据结构

1、JVM创建的数据结构(hotspot/src/share/tools/launcher/java.h)typedef jint (JNICALL *CreateJavaVM_t)(JavaVM **pvm, void **env, void *args);typedef jint (JNICALL *GetDefaultJavaVMInitArgs_t)(void *args);type

2016-04-17 22:30:30 1763

原创 jvm调用JVMTI_EVENT_CLASS_FILE_LOAD_HOOK进行字节码变换的源码分析

1、首先,如果大家对javaagent不是太了解,可以先阅读寒泉子的博客:http://www.infoq.com/cn/articles/javaagent-illustrated?utm_source=tuicool&utm_medium=referral2、调用入口,ClassFileParser::parseClassFile,jvm在将类字节码解析成运行时的类的之前,就会调用

2016-04-16 11:02:50 3258

原创 用javaagent来对java字节码进行变换

1、实现变换的函数typedef void (JNICALL *jvmtiEventClassFileLoadHook) //类字节码变换的回调接口 (jvmtiEnv *jvmti_env, //注册的jvmti JNIEnv* jni_env, //JNI环境 jclass class_being_redefined, // jobject loader,

2016-04-16 10:45:07 1638

原创 openjdk编译和调试

1、环境:ubuntu12.04+gcc 4.6.3目前还没有在mac上编译成功过2、下载openjdkhttp://openjdk.java.net3、安装JDK7所需要的依赖包sudo apt-get build-dep openjdk-7 4、编译脚本,会在openjdk的build目录下生成三个版本的java程序#!/bin/sh#!/bin/bash

2016-04-10 16:03:28 2342

原创 JVM OS::init()源码分析

void os::init(void) { char dummy; /* used to get a guess on initial stack address */// first_hrtime = gethrtime(); // With LinuxThreads the JavaMain thread pid (primordial thread) // is dif

2015-12-22 23:36:35 560

原创 JVM启动过程的重要数据结构

JVM的数据初始化:typedef struct { CreateJavaVM_t CreateJavaVM; GetDefaultJavaVMInitArgs_t GetDefaultJavaVMInitArgs;} InvocationFunctions;其数据的初始化是通过直接查找libjvm.so的方法地址赋值信息CreateJavaVM -----

2015-12-22 20:47:25 742

原创 java switch语句探索

1、问题对于下面的代码:public class Switch{ public void test(int i) { switch(i) { case 0: case 1: System.out.println("a"); break; case 2: System.out.println("a"); break; defaul

2015-12-15 00:26:47 546

原创 netty内存泄露检测原理

一、为什么netty需要内存泄露检测由于netty的ByteBuf可能申请自直接内存,这一块是内存是不纳入GC的,如果不释放,会导致直接内存泄露。二、虚引用虚引用在实际的引用被释放之前,会将虚引用保存到引用队列中,ReferenceQueue referenceQueue = new ReferenceQueue(); Object oc = new Ob

2015-10-11 17:18:27 2169

原创 netty的对象的生命周期管理——引用计数

一、何谓引用计数二、引用计数的应用三、引用计数的局限四、netty的引用计数的实现五、netty的内存泄露检查六、netty的引用计数的使用举例

2015-10-07 23:59:30 2429 3

原创 记一次解决Visual Paradigm打开始终是在Initializing Environment的问题

1、问题描述:mac下的Visual Paradigm第一次打开的时候,卡死在了Initializing Environment的slash页面上分析过程:a、因为知道VP是使用java编写的,打开启动脚本:cd /Applications/Visual\ Paradigm\ 12.2/scripts发现VP的启动脚本:VisualParadigm.sh 内容是:#!/

2015-10-05 12:59:08 5067 1

原创 equinox的框架的类加载器

不同的类加载器加载的类,会有不同的命名空间,不同命名空间的类不能够感受到彼此的存在,并且不同的命名空间中,类型的数据是不同的,如下图所示:所以对于同一个类,由不同的类加载器加载,即使是static的成员变量,也不是公用的,每一个类都有一份自己的static成员变量的数据。所以为了达到这种粒度的类的隔离,可以用不同的类加载器进行加载。equinox框架加载整个框架

2015-09-17 23:43:13 621

原创 Linux内核模块编程_struct list_head

#include #include #include #include #define mm_malloc(size) kmalloc(size, GFP_KERNEL)#define mm_free(ptr) kfree(ptr)struct Word{ int number; struct list_head list;};#define WORD(n

2013-03-21 16:17:06 768

人人sdk-python

人人官网提供的sdk-python真是无力吐槽了,小哥只能自己动手,写了人人的sdk,目前只能完成认证和发布状态(我的需求就这么多),不过你可以模仿我的publish_status函数完成其他的功能!!具体的demo请翻看我的csdn-blog.

2013-03-07

麒麟影音(播放器)

可以看一些被河蟹掉的电影偶,支持一下了啦,这也是技术阿! 呵

2012-01-05

自己动手写操作系统(好)

动手西操作系统,很好的呀,信就下吧

2012-01-05

记忆化搜索 acm算法讲解

记忆化搜索 数据结构 算法 记忆化搜索 ppt讲解

2011-08-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除