- 博客(5)
- 收藏
- 关注
原创 JVM调优-基础知识
JVM调优-基础知识1.如何定位垃圾引用计数:引用计数是如果一个对象有引用存在,计数器加一,如果计数为0,则认为是垃圾。这种方法有个问题,无法标记循环引用的一团垃圾。可达性分析:从跟对象开始搜索,能够触达的对象不是垃圾。那么什么是 根对象 (GCroot)线程栈变量:main方法中的能访问的对象静态变量:class静态变量初始化,能访问的对象常量池JNI指针:native对象2.清除垃圾的三个常用算法Mark-Sweep 标记清除Copying 拷贝Mark-Compact
2020-09-10 19:39:17
165
原创 线程学习记录-锁原理与对象头
锁原理与对象头对象头对象头是堆中对象的头结构,它由两个部分组成,mark word和klass wordmark word的简要介绍mark word结构图示如图所示:mark word的大小为64bit,在对象的5种状态中(无锁,偏向锁,轻量级锁,重量级锁,GC标记),mark word的结构有所不同 在无锁状态时,mark word的前56bit存储对象的has...
2019-12-18 19:49:56
489
原创 线程学习记录-synchronized初探
线程学习记录-synchronized初探synchronized是有锁升级的概念,它代表三种类型的锁偏向锁 轻量级锁 重量级锁jdk1.6之前,synchronized其实都是os锁重量级锁(os): 重量级锁是操作系统级别的锁,它的执行过程类型下面的linux函数调用过程 pthread_mutex_tmt mt理解为int类型 pthread_mutex_...
2019-12-11 20:22:11
145
1
原创 线程学习记录-模拟start方法调用run方法的过程
今天成功模拟了java线程中,start方法调用run方法的过程,特此记录。环境:centos7,jdk1.8 ,gcc首先构建好一个java类,用来模拟线程。public class MyThread { //JVM加载自定义的C库,此时还未创建该库 static { System.loadLibrary("MyThreadNativeLibrary"...
2019-12-07 17:39:48
241
原创 线程学习记录—使用C在linux创建一个线程
闲话少叙,先抛出两个问题java当中的线程和操作系统的线程是什么关系? 调用Thread的start方法,为什么会调用对应的run方法?要回答这两个问题,都绕不开一个关键点——无论通过什么框架,调用多少个线程的api,归根结底,都是在操作系统开启了一个线程。下面介绍一下linux系统,有关线程的控制原语(可以理解为函数) int pthread_create(pthread_t ...
2019-12-04 23:26:58
349
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人