- 博客(11)
- 收藏
- 关注
原创 2、垃圾收集器与内存分配策略
对象已死1、引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加一;当引用失效的时候,计数器值减一;任何时刻计数器为零的对象就是不可能再被使用的。问题:互相引用时无法回收2、可达性分析算法GC Roots 的跟对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程走过的路径称为“引用链”(Reference Chain)若某个对象到GC Roots 没有任何引用链项链,换句话说就是从GC Roots 到这个对象不可达时,证明此对象是不可能再被使用的。
2021-04-06 16:38:40 103
原创 1、JVM内存区域与内存溢出异常
运行时数据区域1、程序计数器:Program Counter Register是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。线程私有字节码解释器工作:通过改变计数器的值来选取下一条需要执行的字节码指令2、java 虚拟机栈:Java Virtual Machine Stack生命周期和线程相同,描述Java方法执行的线程内存模型。线程私有线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧,每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在
2021-04-06 16:32:54 140
原创 URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "%2"
URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "%2"错误原因:地址中含有“%”号解决方式:将地址中的“%”号替换成“%25” 相关代码:str.replace("%","%25");参考博客:https://blog.csdn.net/mr...
2018-12-17 18:48:52 4621
原创 The valid characters are defined in RFC 7230 and RFC 3986
出错背景:帆软报表批量导出的时候路径包含了[{},{}]数组类型的格式,因为我用的JDK1.8,所以对路径审核更严谨,所以会报错:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF...
2018-12-06 16:24:38 225
原创 浅谈nginx
一、什么是nginx nginx是一款高性能的http服务器/反向代理服务器及电子邮件代理服务器。 官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗缺非常低,运行非常稳定。二、nginx的应用场景 1.http服务器。nginx是一个http服务器,可以独立提供http服务。可以做网页静态服务器。 2.虚拟主机。可以实现在一...
2018-04-17 16:39:08 191
原创 JAVA虚拟机
一、定义:虚拟机就是一台虚拟的机器。它是一款软件,用来执行一系列的虚拟计算指令,一般虚拟机可分为系统虚拟机和程序虚拟机。JAVA虚拟机术语程序虚拟机。二、虚拟机参数:1.-XX:+PrintGC :每次触发GC的时候打印相关日志; -XX:+PrintGCDetails:更详细的GC日志; -Xms:堆初始值; -Xmx:堆最大可用值。 总:在实际工作中,我们可以直接将初始的堆大小与
2018-01-18 18:13:51 134
原创 CPU的术语定义
1.内存屏障(memory barriers):是一组处理器指令,用于实现对内存操作的顺序限制; 2.缓冲行(cache line):缓存中可以分配的最小存储单位。处理器填写缓存线时会加载整个缓存线,需要使用多个主内存读周期; 3.原子操作(atomic operations):不可中断的一个或一系列的操作; 4.缓存行填充(cache line fill):当处理器识别到从内存中读取操作数是可缓
2018-01-18 16:52:41 1259
原创 JAVA内存结构和JAVA内存模型
JAVA内存结构:堆、栈、方法区; 堆:存放所有 new出来的东西(堆空间是所有线程共享,虚拟机气动的时候建立);栈:存放局部变量(线程创建的时候 被创建);方法区:被虚拟机加载的类信息、常量、静态常量等。 类加载系统:负责从文件系统或者网络加载class信息,加载的信息存放在方法区。 直接内存:JAVAnio库允许JAVA程序直接内存,从而提高性能,通常直接内存性能高于JAVA堆。读写频繁的
2018-01-18 12:01:43 9943
原创 资源限制
一:什么是资源限制:资源限制是指在进行并发编程时,×那个徐德执行速度受限于计算机硬件资源或软件资源。硬件资源限制:带宽的上传/下载速度、硬盘读写速度和CPU的处理速度;软件资源限制:数据库的连接数和socket连接数等。二:资源限制引发的问题:在并发编程中,讲代码执行的速度加快的原则是讲代码中的串行执行的部分变成并发执行,但是如果将某段串行的代码并发执行,因为受限于资源,仍然在串行执行,这时候程序...
2018-01-17 17:30:17 1209
原创 避免死锁的常见方法
1.避免一个线程同时获取多个锁;2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源;3.尝试使用定时锁,使用lock.try-lock(timeout)来替代使用内部锁机制;4.对于数据库锁,加锁和解锁必须在一个数据库链接里,否则会出现解锁失败的情况。
2018-01-17 17:12:27 564
原创 多线程一定快吗?
不一定,当并发执行累加操作不超过百万次时,速度会比串行执行累加操作要慢,因为线程有创建和上下文切换的开销。时间片:CPU分配给各个线程的时间,时间片一般是几十毫秒,因为时间片非常短,所以CPU通过不停切换线程执行,让我们感觉是同时执行的。上下文切换:CPU通过时间片算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时
2018-01-16 18:24:03 1179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人