代码编织梦想

Java基础知识复习-爱代码爱编程

1.Java语言发展史 詹姆斯·高斯林(James Gosling) 任职于Sun公司的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak;1995年5月以Java的名称正式发布;1996年获得第一笔投资1亿元;1998年提出jdk1.2,更名为java2之后推出jdk1.3 jdk1.42005年更名为jdk5.0,进行了大

ClassLoader类加载器(二):Android Davilk与ART-爱代码爱编程

一、什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的Java应用程序的运行。dex格式是专门为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Google对其进行了特定的优化,使得Dalvik

JVM-常见的 OOM 异常分析-爱代码爱编程

在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。 本篇主要包括如下 OOM 的介绍和示例: java.lang.StackOverflowError java.lang.OutOfMemoryError: Java heap space java.lang

如何做一些简单的JVM调优和Tomcat优化?-爱代码爱编程

1、JVM的运行参数 jvm的参数类型分为三类, 分别是: 1)标准参数 如:     -help     -version 2)-X参数 (非标准参数) 如:     -Xint     -Xcomp 3)-XX参数(使用率较高) 如:     -XX:newSize     -XX:+UseSerialGC 简单记住有这三种参数就可以,

JVM-什么是GC?-爱代码爱编程

GC是什么? GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的。Java中没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,一切垃圾收集器JVM会自动进行管理。 主动请求垃圾回收,可以调用下

Java多线程(二)同步机制从Java内存模型(JMM)说起-爱代码爱编程

同步机制从Java内存模型(JMM)说起 问题: 了解一下 JVM 运行时数据区了解一下主内存与工作内存原子性与有序性volatile 的两语义先行发生原则Java 语言中的线程安全线程安全的实现方法 文章目录 同步机制从Java内存模型(JMM)说起1. JVM运行时数据区1.1 线程共享部分:1.1.1 方法区1.1.2 Java堆1.2 线

JVM-沙箱安全机制-爱代码爱编程

Java安全模型的核心就是Java沙箱。沙箱机制就是讲Java代码限定在虚拟机JVM特定的运行范围中,并且严格限制代码对本地资源的访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。 沙箱主要限制系统资源访问,例如:CPU、内存、文件系统、网络。不同级别的啥想对这些资源访问的限制也可以不一样 当前最新的安全机制实现,引入了域(Domain

JAVA基础之JVM垃圾回收简单浅析-爱代码爱编程

一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象

jvm四大垃圾回收算法-爱代码爱编程

1.引用计数法(reference-counting) 每个对象都有一个引用计数器,当对象被引用一次计数器+1,对象引用失效一次计数器-1,当计数器为0时则表示该对象是垃圾对象,可以被GC回收。现在已经不用,当两个相互引用的对象为null时,引用计数法无法GC。2.复制算法(Copying)(发生在新生代) 复制算法将内存划分为两个区间,在任意时间点

JVM学习总结之-垃圾收集器-爱代码爱编程

内存动态分配和垃圾收集器是JVM的核心内容,所以需要了解垃圾收集器是怎么工作的 如何判断对象是否存活? 虚拟机中的垃圾收集器在回收的时候,首先会判断对象是否还存活,其中判断方法主要包含引用计数法和可达性分析算法。 引用计数算法 顾名思义,引用计数算法就是通过在对象中添加一个计数器,每当有一个地方引用到它时,计数器就+1,当引用失效时,计数

JVM各种垃圾收集器总结大全-爱代码爱编程

* 垃圾收集器 * 单线程: * serial垃圾回收器(新生代) * serial old垃圾回收器(老年代) * 多线程: * ParNew(新生代) * CMS(老年代) * G1 * 采用ParNew+CMS或多或少会产生stop the world影响; * 统一收集新生代和老年代,可以

(已拿offer)蚂蚁金服技术面试题:数据库+缓存+并发编程+Spring+JVM+Netty等-爱代码爱编程

过去很长一段时间内,国内互联网一直处于三足鼎立状态,BAT即百度、阿里巴巴、腾讯。而现在,涌现了越来越多的具有强竞争力的新兴互联网公司,蚂蚁金服就是其中之一。下面分享以下今年蚂蚁金服最新的面试真题,题目来源于几位已经成功入职蚂蚁金服的程序员,希望能够给大家带来一些启发! 答案见文末,另外还有福利赠送(学习资料、面试题集合、思维脑图、学习笔记等)

JVM 类加载器(ClassLoader)笔记-爱代码爱编程

JVM 类加载器 可以分成两类, 一是引导类加载器(C/C++实现),第二种是自定义类加载器(Java实现, 抽象基类ClassLoader)。 这里仅以代码记录自定义类加载器的相关基础 (ClassLoader -> ExtClassLoader 扩展类加载器 -> AppClassLoader 系统类加载器, 都在sun.misc.Lau

HotSpot虚拟机对象探秘,让你new出最优秀的对象-爱代码爱编程

HotSpot虚拟机对象探秘,让你new出最优秀的对象 1.对象的创建2.对象的内存布局3.对象的访问4.总结介绍完Java虚拟机的运行时数据区之后,我们大致知道了虚拟机内存的概况,读者了解了内存中放了些什么后,也许就会想更进一步了解这些虚拟机内存中的数据的其他细节,譬如它们是如何创建、如何布局以及如何访问的。对于这样涉及细节的问题,必须把讨论范围限定在

JVM(1)——类加载器与类的加载过程-爱代码爱编程

1.1总体结构图 1.2 类加载器子系统的作用 1 类加载子系统负责从文件系统中加载class文件,class文件在文件的开头有特定文件标识。 2 ClassLoader只负责class文件的加载。 3 加载的类信息存放在方法区的内存空间。方法区的概念: 存放运行时常量池信息:{ 字符串的字面变量,数字常量} 1.3 ClassLoader角

JVM常用指令-爱代码爱编程

指令码 助记符 说明  0x00 nop 什么都不做  0x01 aconst_null 将null推送至栈顶  0x02 iconst_m1 将int型-1推送至栈顶  0x03 iconst_0 将int型0推送至栈顶  0x04 iconst_1 将int型1推送至栈顶  0x05 iconst_2 将int型2推送至栈顶  0x06 iconst_

类加载-爱代码爱编程

类加载过程 虚拟机只加载程序执行时所需要的的类文件。 JVM不是一开始就把所有的类都加载进内存中,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。 类加载的过程主要分为三个部分: 加载 Java 将字节码数据从不同的数据源读取到 JVM 中,并映射为 JVM 认可的数据结构(Class 对象),这里的数据源可能是各种各

我是这样跟面试官讲垃圾回收的-爱代码爱编程

  垃圾回收机制是什么?我们为什么要学习垃圾回收机制?今天我们就带着这两个问题一起来看看。 在我们日常的开发过程中,并不会过多的关注对象的回收和释放,JVM就可以帮助我们来完成垃圾,减少了我们很多的工作量,仿佛垃圾回收离我们很远,其实垃圾回收机制是我们从初级到中高级开发必须掌握的。把回收对象的任务完全交给JVM,看似解放了,其实

一文读懂《Effective Java》第4条:通过私有构造器来强化工具类不可实例化的能力...-爱代码爱编程

点击上方 蓝字 关注我们 随着计算机革命发展,“不安全”的编程方式逐渐成为编程代价高昂的主因之一。初始化和清理(cleanup)是涉及安全的两个问题。 C++引入了构造器(constructor)的概念,这是一个创建对象时被自动调用的特殊方法,Java 也采用了构造器,并额外提供了“垃圾回收器”。 我们有可能需要编写一些工具类,它们只包

不重启JVM,替换掉已经加载的类,偷天换日?-爱代码爱编程

来源:美团技术博客 在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话: “Debug一下吧。” “线上机器,没开Debug端口。” “看日志,看看请求值和返回值分别是什么?” “那段代码没打印日志。” “改代码,加日志,重新发布一次。” “怀疑是线程池的问题,重