沧海一粟

More know, more less

JVM源码研读:章节序列

Java 虚拟机基础 JVM源码系列:JVM内部运行之Class的Method Java (JDK7)中的String常量和String.intern的实现 JVM源码系列:ThreadMXBean 打出堆栈信息原理分析 JVM源码系列:使用PrintAssembly打印java运行过程中...

2018-11-09 09:16:59

阅读数:156

评论数:0

JVM源码系列:JVM内部运行之Class的Method

1. Class的属性 在JVM中,通常一个class会初始化成Klass(接口), InstanceKlass(实例), Method(方法), ConstantsPool(常量区) 在上图我们可以看到一个大概的Method,ConstantsPool,InstanceKlass之间的关...

2018-11-08 19:55:37

阅读数:110

评论数:0

案例分享:如何通过JVM crash 的日志和core dump定位和分析Instrument引起的JVM crash

1. JVM crash了产品发来一份crash report, 什么是crash report请参考我的前期博客(http://blog.csdn.net/raintungli/article/details/7642575),下面是截取了crash report的部分,用于分析:# Probl...

2017-09-02 11:04:12

阅读数:3771

评论数:1

Struts2远程命令执行漏洞 S2-045 源码分析

Struts2 又爆OGNL的高危漏洞S-045,又是OGNL的漏洞漏洞分析1. Struts 的上传request在上传文件里,Struts默认使用的是common upload 的上传组件, 为了能被action访问到上传的文件,通常会重新封装request,  Spring也是这么做。Jak...

2017-03-08 02:04:34

阅读数:7994

评论数:3

CVE-2016-1000031 Apache Commons FileUpload 反序列化漏洞深入分析

反序列化漏洞最近一直不得安宁,先有Apache Commons Collections通过反序列化实现远程代码执行,再有Spring RMI 反序列化漏洞,最新又有了common upload file的反序列化漏洞CVE-2016-1000031(https://cve.mitre.org/cg...

2017-02-20 15:45:26

阅读数:6557

评论数:0

Java 8 动态类型语言Lambda表达式实现原理分析

Java 8支持动态语言,看到了很酷的Lambda表达式,对一直以静态类型语言自居的Java,让人看到了Java虚拟机可以支持动态语言的目标。

2017-02-07 17:22:18

阅读数:7412

评论数:6

Java Instrument (六) 动态重定义Class

在上篇博客(http://blog.csdn.net/raintungli/article/details/51646556)中提到了在on_attach的方式上如何重新定义class,里面也提到了最后attach时候会调用我们自定义的agent class的agentmain方法,在看Instr...

2016-06-13 23:03:00

阅读数:3986

评论数:1

Java Instrument (五) Agent attach

首先先参考笔者前期的博客(http://blog.csdn.net/raintungli/article/details/7034005),先了解在jvm启动的过程中的两个线程Signal Dispatcher和Attach Listener 在博客中,已经探讨了在Attach Listener...

2016-06-12 23:22:26

阅读数:2947

评论数:0

Java Instrument (三) 钩子函数

Java Instrument (三) 钩子函数

2016-06-07 22:02:41

阅读数:1686

评论数:0

Java Instrument (二) JVMTI

Java Instrument (二) JVMTI

2016-06-07 21:57:10

阅读数:2442

评论数:0

Java Instrument(一) Java Agent

1  Agent Agent在java中本质是一个动态库,利用JVMTI暴露出来的一些接口实现逻辑的入侵,需要实现如下的一个或者多个函数: JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved)...

2016-06-06 09:36:36

阅读数:3601

评论数:0

java中的SecureRandom在linux中的实现

在安全系统中,通常我们会使用securerandom去更安全的生成随机数,而默认的SecureRandom里使用的算法是SHA1PRNG。   Linux中的随机数发生器 在Linux操作系统中,有一个特殊的设备文件,可以用作随机数发生器或伪随机数发生器。 /dev/random 在读取时,/de...

2015-01-19 19:52:28

阅读数:19517

评论数:5

Linux下关于TCP的keep alive的实现源码分析

TCP下的Keep Alive 我们常说的TCP的keep alive,就是为了保证连接的有效性,在间隔一定的时间发探测包,根据回复来确认该连接是否有效。通常上层应用会自己提供心跳检测机制,而Linux内核本身也提供了从内核态确保连接有效性的方式。 在sock 函数中可以设置是否需要打开keep...

2015-01-14 21:14:49

阅读数:3640

评论数:0

不要在linux上使用java 7 Files的接口参数StandardOpenOption.DELETE_ON_CLOSE

最近在看安全代码规范建议中提到关于如何删除创建的临时文件,推荐使用jdk7中的Files的函数,通过参数StandardOpenOption.DELETE_ON_CLOSE来控制 代码示例 BufferedWriter writer = Files.newBufferedWriter(tempFi...

2015-01-07 19:50:17

阅读数:2824

评论数:0

自己动手编译hsdis

HSDIS 是hotspot 的一个工具,用于能够da yin

2014-10-21 17:44:02

阅读数:3106

评论数:0

Java (JDK7)中的String常量和String.intern的实现

Java中的String常量和String.intern的实现

2014-08-16 10:15:22

阅读数:7366

评论数:4

linux上TCP connection timeout的原因查找

最近在产线上经常出现connection timeout的问题

2014-07-16 17:37:44

阅读数:25459

评论数:0

JVM源码系列:ThreadMXBean 打出堆栈信息原理分析

我们通常会使用工具jstack 去跟踪线程信息,其如何实现使用attach 的方式还是ptrace 的方式,这些可以去参考本人的博客的其他文章。 但这些方式都是外部使用的方式,如何直接使用java代码得到当前进程的线程的信息,方便监控jvm的整个运行状态,就不的不提到了ManagementFac...

2014-03-15 16:28:21

阅读数:4827

评论数:2

java JNI 实现原理 (六) 调用JNI方法

在前面的博客中提到过调用的JNI的entry是generate_native_entry,也就是说方法generate_native_entry是最终调用的我们的c++写的库文件里的方法

2013-11-16 11:14:07

阅读数:3543

评论数:0

java JNI 实现原理 (五) JNI方法解释调用

Hotspot主要有两种解释器,而下面我们主要讨论的是 Template Intepreter也叫asm interprete解释器, 文章下面的介绍基本都是基于template解释器 我们举一个invokespecial的例子,下面是templateTable方法解释invokespecial的...

2013-11-15 08:25:08

阅读数:3197

评论数:1

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