网上关于这个方面的文章也不少,基本的思路是线程+缓存来解决。下面提出一些优化: 1、采用线程池 2、内存缓存+文件缓存 3、内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内存的1/4 4、对下载的图片进行按比例缩放,以减少内存的消耗 具体的代码里面说明
分类:
移动开发 时间:
2016-02-27 19:21:48
阅读次数:
258
JVM内存类型 JAVA堆内存 Perm内存 java进程本地内存 java进程内存=JAVA堆内存+Perm内存+java进程本地内存,其中堆内存和Perm内存都可以通过参数设置它的大小。而本地内存的大小是不需要设置的,是直接由操作系统从总的内存中分配的。 OutOfMenory的表现: 1、系统
分类:
其他好文 时间:
2016-02-23 17:13:13
阅读次数:
213
由于jvm默认的内存设置为64M,如果运行下面的代码创建99mb的空间就会报错 1 package com.lzp.xml; 2 3 public class Demo1 4 { 5 public static void main(String[] args) 6 { 7 byte b []= ne
分类:
其他好文 时间:
2016-02-21 21:16:52
阅读次数:
201
注:本文主要参考自《深入理解java虚拟机(第二版)》 在查看本文前,先要了解JVM内存结构,见 第一章 JVM内存结构 1、类加载流程 把描述类的数据从xxx.class文件加载到JVM内存 对这些数据进行校验、准备、解析(这三个过程总称为"链接") 对这些数据进行初始化,最终形成可被JVM直接使
分类:
其他好文 时间:
2016-02-18 22:55:49
阅读次数:
287
原文地址:http://www.lofter.com/app/QRCodedownload?act=qbbkdlxz_20150313_13 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计
分类:
其他好文 时间:
2016-02-16 23:20:23
阅读次数:
353
注意:本文主要参考自《深入理解Java虚拟机(第二版)》 说明:查看本文之前,推荐先知道JVM内存结构,见《第一章 JVM内存结构》 1、内存回收的区域 堆:这是GC的主要区域 方法区:回收两样东西 无用的类 废弃的常量 栈和PC寄存器是线程私有区域,不发生GC 2、怎样判断对象是否存活 垃圾回收:
分类:
编程语言 时间:
2016-02-05 18:54:38
阅读次数:
146
JAVA能够实现跨平台的一个根本原因,是定义了class文件的格式标准,凡是实现该标准的JVM都能够加载并解释该class文件,据此也可以知道,为啥Java语言的执行速度比C/C++语言执行的速度要慢了,当然原因肯定不止这一个,如在JVM中没有数据寄存器,指令集使用的是栈来保存中间数据…等,尽管Ja...
分类:
其他好文 时间:
2016-01-25 01:18:37
阅读次数:
213
JVM内存管理 JVM在执行java程序的过程中,会把内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。程序计数器 程序计数器:当前线程所执行字节码的行号指示器。 由于JVM的多线程...
分类:
其他好文 时间:
2016-01-19 19:27:21
阅读次数:
151
得出三点结论 一,java.lang.OutOfmemoryError:PermGenSpace报错一种可能是tomcat内存不足,一种可能是jvm内存不足。对于后者,有种可能性是,myeclipse里用的还是自带的jdk。 二,web无法启动,有一种可能是web项目里面不是webroot而是web...
分类:
编程语言 时间:
2016-01-15 20:09:43
阅读次数:
202
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。一、Java JVM内存介绍JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Ja...
分类:
其他好文 时间:
2016-01-15 14:33:41
阅读次数:
163