学习D17-D27

##1.0 进程

1.1 程序与 进程

进程:是系统进行资源分配的基本单位

进程:动态的概念,运行起来的程序,包括程序,以及运行程序所需要的计算机资源等

程序:静态的概念,我们写的.py .go等,都是程序

1.2 多进程的概念

import multiprocessing
import os

num = 0

def add_num1():
    global num
    for i in range(1000000):

        num += 1
            #释放锁

    print('子进程1已经完成,此时得到的num','当前子进程编号',num,os.getpid(),'当前子进程父进程编号(主进程)',os.getppid())




def add_num2():
    global num
    for i in range(1000000):
        num += 1


    print('子进程2已经完成,此时得到的num',num)

if __name__ == '__main__':
    print('主进程编号',os.getpid())
    process1 = multiprocessing.Process(target=add_num1)
    process2 = multiprocessing.Process(target=add_num2)

    process1.start()
    process2.start()
    
注意点:
1、os.getpid获取执行当前任务的进程编号
2、os.getppid获取的是当前进程的父进程编号
3、多进程之间不共享全局变量,多个进程之间是独立的

###1.3 传参

def add_num1(count,name):
    global num
    for i in range(count):

        num += 1
            #释放锁

    print('子进程1已经完成,此时得到的num',num,'当前子进程编号',os.getpid(),'当前子进程父进程编号(主进程)',os.getppid())
    
process1 = multiprocessing.Process(target=add_num1,args=(1000,),kwargs={'name':'小王'})

1.4 队列

try:
    for i in range(4):
        que.put('123',True,1)
except Exception as e:
    print('消息队列已经满了,','当前数据有%s个'%que.qsize())
    
注意点:
1、put在默认情况下,如果队列已经满了,一直阻塞,等待队列出现空余位置
2、如果设置了timeout,那么等待过后,会报错
3、block设置为False,直接报错



if not que.full():
    for i in range(que.qsize()):
        que.put_nowait('123')
from multiprocessing import Queue,Process

que = Queue(3)
# que.put('123')
# que.put('123')
# # que.put('123',block=True,timeout=10)
# # que.put('123')
# # que.put('123')

# que.get()


# try:
#     for i in range(4):
#         que.put('123',True,1)
# except Exception as e:
#     print('消息队列已经满了,','当前数据有%s个'%que.qsize())

# if not que.full():
#     for i in range(que.qsize()):
#         que.put_nowait('123')


def readData(que):
    if not que.empty():

        data = que.get_nowait()
        print(data)

def writeData(que):
    if not que.full():
        try:
            que.put_nowait('123')
        except :
            print('出错')

if __name__ == '__main__':
    q = Queue()
    p1 = Process(target=writeData,args=(q,))
    p2 = Process(target=readData,args=(q,))

    p1.start()

    import time
    time.sleep(10)

    p2.start()
from multiprocessing import Pool
import os


def info():
    print('执行该函数的进程编号',os.getpid())
    import time
    time.sleep(1)
    print('这是一个函数')




if __name__ == '__main__':
    po = Pool(3)
    print(po)
    for i in range(20):
        po.apply_async(info)
    print('############开始#############')
    #将进程池关闭,不再接收新的请求
    po.close()
    #等待进程池中的进程全部结束
    po.join()
    print('###############结束########3')

1.5 进程与线程的区别

1、线程是进程中的一个实例,真正干活的人是线程,

2、进程只是资源分配的基本单位,线程是调度的基本单位

3、没有进程就没有线程这个概念

4、不同的进程一起运行,其中一个进程死了,其他进程不受影响

5、在同一个进程内,如果线程消亡,那这个进程受影响,所以从健壮性来讲,进程比线程更加稳定

6、线程共享全局变量,进程创建子进程相当于粘贴复制,此时相当于创建了一份副本,不共享全局变量

2、线程

2.1 定义

默认情况下,程序启动只有一个线程,这个线程就是主线程,线程是CPU调度的基本单位

2.2 统计线程的个数

import threading
print('hello')
print('#######统计当前线程运行的个数######')
print(threading.active_count())

展示:
hello
#######统计当前线程运行的个数######
1

注意点:
在没有添加进程的情况下,我们依旧可以找到一个线程,这个线程是主线程

2.3 创建多线程

def __init__(self, group=None, target=None, name=None,
             args=(), kwargs=None, *, daemon=None):
             
import threading
import time
# print('hello')
# print('#######统计当前线程运行的个数######')
# print(threading.active_count())


def calm():
    for i in range(10):
        time.sleep(0.1)
        print('第',i,'次冷静一下')

def smoke():
    for j in range(10):
        time.sleep(0.1)
        print('第',j,'支烟')



if __name__ == '__main__':
    # smoke()
    # calm()
    print('当前进程的线程个数',threading.active_count())
    #创建多线程
    thread_smoke = threading.Thread(target=smoke)
    print('当前进程的线程个数', threading.active_count())

    thread_calm = threading.Thread(target=calm)
    #调用
    thread_smoke.start()
    thread_calm.start()
    print('当前进程的线程个数', threading.active_count())


展示:
当前进程的线程个数 1
当前进程的线程个数 1
当前进程的线程个数 3
第 0 支烟
第 0 次冷静一下
第 1 支烟
第 1 次冷静一下
第 2 支烟
第 2 次冷静一下
第 3 次冷静一下
第 3 支烟
第 4 支烟
第 4 次冷静一下
第 5 次冷静一下
第 5 支烟
第 6 次冷静一下
第 6 支烟
第 7 支烟
第 7 次冷静一下
第 8 支烟
第 8 次冷静一下
第 9 次冷静一下
第 9 支烟

2.4 多线程的注意点

1、线程的执行是无序的,因为是CPU进行调度的

2、守护主线程,主线程退出,那子线程直接销毁

import threading
import time
# print('hello')
# print('#######统计当前线程运行的个数######')
# print(threading.active_count())


def calm():
    for i in range(10):
        time.sleep(0.1)
        print('第',i,'次冷静一下')

def smoke():
    for j in range(10):
        time.sleep(0.1)
        print('第',j,'支烟')



if __name__ == '__main__':
    # smoke()
    # calm()
    print('当前进程的线程个数',threading.active_count())
    #创建多线程
    thread_smoke = threading.Thread(target=smoke)
    print('当前进程的线程个数', threading.active_count())

    thread_calm = threading.Thread(target=calm)
    #守护主线程
    thread_smoke.setDaemon(True)
    thread_calm.setDaemon(True)


    #调用
    thread_smoke.start()
    thread_calm.start()
    # time.sleep(0.1)

    # thread_calm.join()
    # thread_smoke.join()
    print('当前进程的线程个数', threading.active_count())
    print('主线程已经结束')
    exit()
    
    展示:
    当前进程的线程个数 1
    当前进程的线程个数 1
    当前进程的线程个数 3
    主线程已经结束

3、守护子线程,只有当子线程全部结束之后,主线程才结束

def calm():
    for i in range(10):
        time.sleep(0.1)
        print('第',i,'次冷静一下')

def smoke():
    for j in range(10):
        time.sleep(0.1)
        print('第',j,'支烟')



if __name__ == '__main__':
    # smoke()
    # calm()
    print('当前进程的线程个数',threading.active_count())
    #创建多线程
    thread_smoke = threading.Thread(target=smoke)
    print('当前进程的线程个数', threading.active_count())
    thread_calm = threading.Thread(target=calm)

    #调用
    thread_smoke.start()
    thread_calm.start()
    # time.sleep(0.1)
    
    thread_calm.join()
    thread_smoke.join()
    print('当前进程的线程个数', threading.active_count())
    print('主线程已经结束')
    exit()
    
    展示:
    当前进程的线程个数 1
当前进程的线程个数 1
第 0 支烟
第 0 次冷静一下
第 1 支烟
第 1 次冷静一下
第 2 支烟
第 2 次冷静一下
第 3 支烟
第 3 次冷静一下
第 4 次冷静一下
第 4 支烟
第 5 次冷静一下
第 5 支烟
第 6 支烟
第 6 次冷静一下
第 7 支烟
第 7 次冷静一下
第 8 次冷静一下
第 8 支烟
第 9 支烟
第 9 次冷静一下
当前进程的线程个数 1
主线程已经结束

4、子线程之间共享全局变量,就会造成资源的争抢问题

2.5 互斥锁的问题

问题:

因为线程之间共享全局变量,所以,在多线程几乎在同时运行的时候,几乎同时修改同一个全局变量的时候,就要进行控制

此时,需要互斥锁

当某个线程需要修改资源的时候,先将资源进行锁定,其他线程不能修改该线程

当线程修改完成之后,并且释放完互斥锁之后,其他的线程才可以使用

互斥锁保证在当前只有一个线程可以使用修改同一个资源

import threading


num = 0

def add_num1():
    global num
    for i in range(1000000):
        #上锁
        lock_flag = lock_obj.acquire(True)
        if lock_flag:
            num += 1
            #释放锁
            lock_obj.release()
    print('子线程1已经完成,此时得到的num',num)



def add_num2():
    global num
    for i in range(1000000):
        # 上锁
        lock_flag = lock_obj.acquire(True)
        if lock_flag:
            num += 1
            # 释放锁
            lock_obj.release()
    print('子线程2已经完成,此时得到的num',num)


if __name__ == '__main__':

    lock_obj = threading.Lock()
    thread1 = threading.Thread(target=add_num1)
    thread2 = threading.Thread(target=add_num2)

    thread1.start()
    # import time
    # time.sleep(5)
    thread2.start()
    
   注意点:
   1、确保了关键代码只能由一个线程从头到尾完整的执行完成
   2、阻止了多线程的并发操作,包含锁的代码其实还是单线程执行,效率下降了;
   	  如果当前的程序出现了多个锁,可能会出现死锁的问题
   

2.6 死锁的问题

避免死锁的方法:

1、超时释放

2、设计的时候,避免死锁

2.7 线程安全

from queue import Queue

from Queue import Queue #python2

3、协程

微线程,由程序员调度,线程:CPU调度的

3.1 实现协程

import time

def work1():
    for i in range(5):
        print('work1',i)
        yield
        print('11111111111')
        time.sleep(1)

def work2():
    for i in range(5):
        print('work2',i)
        yield
        time.sleep(1)

w1 = work1()
w2 = work2()
# while True:
next(w1)
next(w2)
next(w2)
next(w1)
注意点:
利用的是yeild这个属性,遇到yield会暂停执行,完成任务的切换

import time
from greenlet import greenlet

def work1():
    for i in range(5):
        print('work1',i)
        g2.switch()
        print('######已经切换了g2#####')
        time.sleep(1)


def work2():
    for i in range(5):
        print('work2',i)
        g1.switch()
        time.sleep(1)



g1 = greenlet(work1)
print(g1)

g2 = greenlet(work2)
print(g2)

g2.switch()

注意点:
需要手动取切换协程
但是已经封装了协程了,比原始版本进化一点
import gevent
import time

from gevent import monkey

monkey.patch_all()


def work1():
    for i in range(5):
        print('work1',i,gevent.getcurrent())
        time.sleep(1)
        # gevent.sleep(1)

def work2():
    for i in range(5):
        print('work2',i,gevent.getcurrent())
        time.sleep(1)
        # gevent.sleep(1)

# g1 = gevent.spawn(work1)
# g2 = gevent.spawn(work2)
#
#
# g1.join()
# g2.join()

gevent.joinall([
    gevent.spawn(work1),
    gevent.spawn(work2)
])

4、网络通信概述

###4.1 网络的定义

网络:辅助双方或者多方能够连接在一起的工具,用来进行数据交换

协议:约定俗成的规定

tcp/ip协议:计算机遵守的网络通信协议

###4.2 端口

个数:2的16次方(65536)(0-65535)

端口是数据发出或接收的入口

端口的目的:通过端口号找到对应的进程,完成数据的通信

著名端口0-1023

动态端口:2014-65535

###4.3 IP

IP地址:标注在网络中标记一台计算机的一串数字,例如192.168.24.1 ,在本地局域网上是唯一的

注意:127.0.0.1 代表的是本机的IP地址

5、socket

简称:套接字,是进程之间进行通信的一种方式

实现了不同主机之间的进程通信,我们现在使用的大多数的服务:qq、浏览网页等基于socket来完成通信的

5.1 python 中socket

def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None):
    # For user code address family and type values are IntEnum members, but
    # for the underlying _socket.socket they're just integers. The
    # constructor of _socket.socket converts the given argument to an
    # integer automatically.
    _socket.socket.__init__(self, family, type, proto, fileno)
    self._io_refs = 0
    self._closed = False
    
    注意点:
    1、family=AF_INET,表示的用于Internet之间的通信
    2、type=SOCK_STREAM,是指流式套接字,用于tcp协议
    3、type=SOCK_DGRAM数据报套接字,用于udp协议

5.2 udp发送数据

def sendto(self, data, flags=None, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ 
    """
    sendto(data[, flags], address) -> count
    
    Like send(data, flags) but allows specifying the destination address.
    For IP sockets, the address is a pair (hostaddr, port).
    """
    pass
    
    注意点:
    1、sendto()这个方法发送的数据,是bytes类型,普通字符串用encode()转化成bytes
    2、address 用来指定对方的IP和端口,打包成元组
    

5.3 udp接收数据

def recvfrom(self, buffersize, flags=None): # real signature unknown; restored from __doc__
    """
    recvfrom(buffersize[, flags]) -> (data, address info)
    
    Like recv(buffersize, flags) but also return the sender's address info.
    """
    pass
    
    注意点:
    1、返回值,返回(数据,发送该条信息的地址)
    2、数据接收过来是bytes类型的,需要用decode()转换成普通的字符串
   

5.4 bind端口

def bind(self, address): # real signature unknown; restored from __doc__
    """
    bind(address)
    
    Bind the socket to a local address.  For IP sockets, the address is a
    pair (host, port); the host must refer to the local host. For raw packet
    sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])
    """
    pass
    
    socket_udp_client.bind(('',9000))
    ''代表本机的任何一个地址都可以

6、 UDP协议

5.1 特点

面向无连接的通讯协议

5.2 udp服务端的通信流程

1、创建一个socket套接字

2、绑定端口

3、接收服务端传递过来的请求

4、处理请求,发送数据给客户端

5、关闭套接字

5.3 UDP 客户端通信流程

1、创建套接字

2、发送请求(数据)

3、接收数据

4、关闭套接字

7、tcp协议

7.1 基于tcp协议的客户端

1、创建套接字

2、与服务端创建连接

3、发送数据

4、接收数据

5、关闭套接字

###7.2 基于tcp协议的服务端

1、创建socket套接字

2、bind绑定服务端的IP和端口

3、listen监听,使服务端的套接字从主动状态变成被动状态,等待连接

4、accept等待客户端的连接,运行之后是阻塞状态,直到有连接

5、收发数据

6、关闭套接字

8 、请求方式:

8.1 get

最常用的请求方式,用来向后端请求资源的,会将部分的参数拼接在URL地址上

http://tieba.baidu.com/f?kw=美食&ie=utf-8&pn=15000

?后面拼接的都是需要向后端传递的数据参数

8.2 post

也是常用的请求方式,但是它会将需要传递的数据,放置在post的请求体中,传递比get更安全,所以post请求中的数据可能是敏感数据:用户名和密码等

向指定资源提交数据进行处理请求(提交表单、上传文件),又可能导致新的资源的建立或原有资源的修改

8.3 delete

请求服务器删除request-URL所标示的资源*(请求服务器删除页面)

8.4 put

向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定文档的内容)

8.5 opions

返回服务器针对特定资源所支持的HTML请求方法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能

9 请求报文的解析

---------------- ------- ------- ------- 00000007c0b4f000 1036996 0 0 ----- [ anon ] 00007f1cfded6000 33960 0 0 ----- [ anon ] 00007f1d03ffd000 12 0 0 ----- [ anon ] 00007f1d0bffd000 12 0 0 ----- [ anon ] 00007f1d0ffff000 4 0 0 ----- [ anon ] 00007f1d12153000 31412 0 0 ----- [ anon ] 00007f1d17ffe000 8 0 0 ----- [ anon ] 00007f1d1ffa7000 356 0 0 ----- [ anon ] 00007f1d27fff000 4 0 0 ----- [ anon ] 00007f1d2bfff000 4 0 0 ----- [ anon ] 00007f1d2ffff000 4 0 0 ----- [ anon ] 00007f1d33ffe000 8 0 0 ----- [ anon ] 00007f1d3bffe000 8 0 0 ----- [ anon ] 00007f1d3ffff000 4 0 0 ----- [ anon ] 00007f1d44b85000 53740 0 0 ----- [ anon ] 00007f1d57ffd000 12 0 0 ----- [ anon ] 00007f1d5bffe000 8 0 0 ----- [ anon ] 00007f1d5fffd000 12 0 0 ----- [ anon ] 00007f1d6bfff000 4 0 0 ----- [ anon ] 00007f1d6fffd000 12 0 0 ----- [ anon ] 00007f1d73ffd000 12 0 0 ----- [ anon ] 00007f1d77ffe000 8 0 0 ----- [ anon ] 00007f1d87fff000 4 0 0 ----- [ anon ] 00007f1d8bfff000 4 0 0 ----- [ anon ] 00007f1d8fffd000 12 0 0 ----- [ anon ] 00007f1d92c01000 20476 0 0 ----- [ anon ] 00007f1d94b65000 4 0 0 ----- [ anon ] 00007f1d95366000 4 0 0 ----- [ anon ] 00007f1d95b67000 4 0 0 ----- [ anon ] 00007f1d97e60000 2048 0 0 ----- libasyncProfiler.so 00007f1d9806a000 12 0 0 ----- [ anon ] 00007f1d9816b000 12 0 0 ----- [ anon ] 00007f1d9826c000 12 0 0 ----- [ anon ] 00007f1d9936e000 4 0 0 ----- [ anon ] 00007f1d99c5b000 12 0 0 ----- [ anon ] 00007f1d99d5c000 12 0 0 ----- [ anon ] 00007f1d99e5d000 12 0 0 ----- [ anon ] 00007f1d99f5e000 12 0 0 ----- [ anon ] 00007f1d9a05f000 12 0 0 ----- [ anon ] 00007f1d9a160000 12 0 0 ----- [ anon ] 00007f1d9a261000 12 0 0 ----- [ anon ] 00007f1d9a362000 12 0 0 ----- [ anon ] 00007f1d9a463000 12 0 0 ----- [ anon ] 00007f1d9a564000 12 0 0 ----- [ anon ] 00007f1d9a665000 12 0 0 ----- [ anon ] 00007f1d9a766000 12 0 0 ----- [ anon ] 00007f1d9a867000 12 0 0 ----- [ anon ] 00007f1d9a968000 12 0 0 ----- [ anon ] 00007f1d9aa69000 12 0 0 ----- [ anon ] 00007f1d9ab6a000 12 0 0 ----- [ anon ] 00007f1d9ac6b000 12 0 0 ----- [ anon ] 00007f1d9ad6c000 12 0 0 ----- [ anon ] 00007f1d9ae6d000 12 0 0 ----- [ anon ] 00007f1d9af6e000 12 0 0 ----- [ anon ] 00007f1d9b06f000 12 0 0 ----- [ anon ] 00007f1d9b170000 12 0 0 ----- [ anon ] 00007f1d9b271000 12 0 0 ----- [ anon ] 00007f1d9ca68000 12 0 0 ----- [ anon ] 00007f1d9cb69000 12 0 0 ----- [ anon ] 00007f1d9ce6a000 12 0 0 ----- [ anon ] 00007f1d9cf6b000 12 0 0 ----- [ anon ] 00007f1d9d06c000 12 0 0 ----- [ anon ] 00007f1d9d16d000 12 0 0 ----- [ anon ] 00007f1d9d26e000 12 0 0 ----- [ anon ] 00007f1d9d36f000 12 0 0 ----- [ anon ] 00007f1d9da70000 12 0 0 ----- [ anon ] 00007f1d9db71000 12 0 0 ----- [ anon ] 00007f1d9dc72000 12 0 0 ----- [ anon ] 00007f1d9dd73000 12 0 0 ----- [ anon ] 00007f1d9de74000 12 0 0 ----- [ anon ] 00007f1d9e175000 12 0 0 ----- [ anon ] 00007f1da0478000 12 0 0 ----- [ anon ] 00007f1da0579000 12 0 0 ----- [ anon ] 00007f1da087a000 12 0 0 ----- [ anon ] 00007f1da097b000 12 0 0 ----- [ anon ] 00007f1da0a7c000 12 0 0 ----- [ anon ] 00007f1da0b7d000 4 0 0 ----- [ anon ] 00007f1da137e000 4 0 0 ----- [ anon ] 00007f1da2383000 2048 0 0 ----- librocksdbjni1412943798420921933.so 00007f1da25ea000 12 0 0 ----- [ anon ] 00007f1da26eb000 12 0 0 ----- [ anon ] 00007f1da27ec000 12 0 0 ----- [ anon ] 00007f1da2aed000 12 0 0 ----- [ anon ] 00007f1da2bee000 12 0 0 ----- [ anon ] 00007f1da2cef000 12 0 0 ----- [ anon ] 00007f1da2df0000 12 0 0 ----- [ anon ] 00007f1da2ef1000 12 0 0 ----- [ anon ] 00007f1da2ff2000 12 0 0 ----- [ anon ] 00007f1da30f3000 12 0 0 ----- [ anon ] 00007f1da31f4000 12 0 0 ----- [ anon ] 00007f1da32f5000 12 0 0 ----- [ anon ] 00007f1da33f6000 12 0 0 ----- [ anon ] 00007f1da34f7000 12 0 0 ----- [ anon ] 00007f1da35f8000 12 0 0 ----- [ anon ] 00007f1da36f9000 12 0 0 ----- [ anon ] 00007f1da37fa000 12 0 0 ----- [ anon ] 00007f1da38fb000 12 0 0 ----- [ anon ] 00007f1da39fc000 12 0 0 ----- [ anon ] 00007f1da3afd000 12 0 0 ----- [ anon ] 00007f1da3dfe000 12 0 0 ----- [ anon ] 00007f1da3eff000 12 0 0 ----- [ anon ] 00007f1dab7f4000 8240 0 0 ----- [ anon ] 00007f1db0132000 64312 0 0 ----- [ anon ] 00007f1db44ce000 60616 0 0 ----- [ anon ] 00007f1db8153000 64180 0 0 ----- [ anon ] 00007f1dbc2da000 62616 0 0 ----- [ anon ] 00007f1dc009b000 64916 0 0 ----- [ anon ] 00007f1dc402b000 65364 0 0 ----- [ anon ] 00007f1dc815c000 64144 0 0 ----- [ anon ] 00007f1dcd760000 41600 0 0 ----- [ anon ] 00007f1dd0021000 65404 0 0 ----- [ anon ] 00007f1dd4790000 57792 0 0 ----- [ anon ] 00007f1dd9859000 40604 0 0 ----- [ anon ] 00007f1ddc150000 64192 0 0 ----- [ anon ] 00007f1de0069000 65116 0 0 ----- [ anon ] 00007f1de7ffe000 8 0 0 ----- [ anon ] 00007f1debc2f000 3908 0 0 ----- [ anon ] 00007f1dedf83000 33268 0 0 ----- [ anon ] 00007f1df1564000 43632 0 0 ----- [ anon ] 00007f1df40c7000 64740 0 0 ----- [ anon ] 00007f1dfa75e000 25224 0 0 ----- [ anon ] 00007f1dfc09b000 64916 0 0 ----- [ anon ] 00007f1e000a7000 64868 0 0 ----- [ anon ] 00007f1e04091000 64956 0 0 ----- [ anon ] 00007f1e080c7000 64740 0 0 ----- [ anon ] 00007f1e0fffe000 8 0 0 ----- [ anon ] 00007f1e10768000 57952 0 0 ----- [ anon ] 00007f1e142ec000 62544 0 0 ----- [ anon ] 00007f1e1821f000 12 0 0 ----- [ anon ] 00007f1e18320000 12 0 0 ----- [ anon ] 00007f1e18421000 12 0 0 ----- [ anon ] 00007f1e18522000 12 0 0 ----- [ anon ] 00007f1e18a4b000 2044 0 0 ----- libsunec.so 00007f1e18e50000 12 0 0 ----- [ anon ] 00007f1e18f51000 12 0 0 ----- [ anon ] 00007f1e19052000 12 0 0 ----- [ anon ] 00007f1e19153000 12 0 0 ----- [ anon ] 00007f1e19254000 12 0 0 ----- [ anon ] 00007f1e19355000 12 0 0 ----- [ anon ] 00007f1e19c56000 12 0 0 ----- [ anon ] 00007f1e19d57000 12 0 0 ----- [ anon ] 00007f1e19e58000 12 0 0 ----- [ anon ] 00007f1e19f59000 12 0 0 ----- [ anon ] 00007f1e1a05a000 12 0 0 ----- [ anon ] 00007f1e1a15b000 12 0 0 ----- [ anon ] 00007f1e1a25c000 12 0 0 ----- [ anon ] 00007f1e1a35d000 12 0 0 ----- [ anon ] 00007f1e1a45e000 12 0 0 ----- [ anon ] 00007f1e1a55f000 12 0 0 ----- [ anon ] 00007f1e1a660000 12 0 0 ----- [ anon ] 00007f1e1a761000 12 0 0 ----- [ anon ] 00007f1e1a862000 12 0 0 ----- [ anon ] 00007f1e1adfa000 12 0 0 ----- [ anon ] 00007f1e1aefb000 12 0 0 ----- [ anon ] 00007f1e1b7fc000 12 0 0 ----- [ anon ] 00007f1e1b8fd000 12 0 0 ----- [ anon ] 00007f1e1b9fe000 12 0 0 ----- [ anon ] 00007f1e1baff000 12 0 0 ----- [ anon ] 00007f1e1bdf6000 40 0 0 ----- [ anon ] 00007f1e1fffd000 12 0 0 ----- [ anon ] 00007f1e208f8000 12 0 0 ----- [ anon ] 00007f1e20bf9000 12 0 0 ----- [ anon ] 00007f1e210fa000 12 0 0 ----- [ anon ] 00007f1e215fb000 4 0 0 ----- [ anon ] 00007f1e216fc000 12 0 0 ----- [ anon ] 00007f1e219fd000 12 0 0 ----- [ anon ] 00007f1e21afe000 12 0 0 ----- [ anon ] 00007f1e21c0e000 2044 0 0 ----- libbz2.so.1.0.6 00007f1e21e34000 2044 0 0 ----- liblzma.so.5.2.2 00007f1e2204c000 2044 0 0 ----- libelf-0.176.so 00007f1e22251000 2044 0 0 ----- libattr.so.1.1.0 00007f1e224a0000 2048 0 0 ----- libdw-0.176.so 00007f1e226a7000 2044 0 0 ----- libcap.so.2.22 00007f1e228ba000 2044 0 0 ----- libnss_myhostname.so.2 00007f1e36bb2000 2048 0 0 ----- libresolv-2.17.so 00007f1e36db4000 8 0 0 rw--- [ anon ] 00007f1e36dbc000 2044 0 0 ----- libnss_dns-2.17.so 00007f1e36fd5000 2044 0 0 ----- libnet.so 00007f1e371e8000 2044 0 0 ----- libnio.so 00007f1e373f2000 2044 0 0 ----- libmanagement.so 00007f1e375f3000 12 0 0 ----- [ anon ] 00007f1e376f4000 16 0 0 ----- [ anon ] 00007f1e377f5000 16 0 0 ----- [ anon ] 00007f1e378f6000 16 0 0 ----- [ anon ] 00007f1e379f7000 12 0 0 ----- [ anon ] 00007f1e37af8000 12 0 0 ----- [ anon ] 00007f1e37bfd000 2044 0 0 ----- libdt_socket.so 00007f1e37dfe000 12 0 0 ----- [ anon ] 00007f1e37eff000 12 0 0 ----- [ anon ] 00007f1e3bffd000 12 0 0 ----- [ anon ] 00007f1e3c0af000 12 0 0 ----- [ anon ] 00007f1e3c1b0000 4 0 0 ----- [ anon ] 00007f1e4190d000 198336 0 0 ----- [ anon ] 00007f1e57fff000 4 0 0 ----- [ anon ] 00007f1e5875f000 4 0 0 ----- [ anon ] 00007f1e58860000 4 0 0 ----- [ anon ] 00007f1e58961000 4 0 0 ----- [ anon ] 00007f1e58a62000 4 0 0 ----- [ anon ] 00007f1e5ad74000 3096 0 0 ----- [ anon ] 00007f1e5b082000 2044 0 0 ----- libzip.so 00007f1e5b28f000 2044 0 0 ----- libnss_files-2.17.so 00007f1e5b490000 24 0 0 rw--- [ anon ] 00007f1e5b498000 2048 0 0 ----- libnpt.so 00007f1e5b6d5000 2048 0 0 ----- libjdwp.so 00007f1e5b901000 2044 0 0 ----- libjava.so 00007f1e5bb10000 2044 0 0 ----- libverify.so 00007f1e5bd19000 2044 0 0 ----- librt-2.17.so 00007f1e5bf2f000 2044 0 0 ----- libgcc_s-4.8.5-20150702.so.1 00007f1e5c231000 2044 0 0 ----- libm-2.17.so 00007f1e5c51b000 2048 0 0 ----- libstdc++.so.6.0.19 00007f1e5d4de000 2044 0 0 ----- libjvm.so 00007f1e5d9b0000 2044 0 0 ----- libc-2.17.so 00007f1e5dbbc000 2048 0 0 ----- libdl-2.17.so 00007f1e5ddcc000 2044 0 0 ----- libjli.so 00007f1e5dfe2000 2044 0 0 ----- libz.so.1.2.7 00007f1e5e1fa000 2044 0 0 ----- libpthread-2.17.so 00007f1e5e510000 16 0 0 ----- [ anon ] 00007f1e5e61e000 4 0 0 r---- [ anon ] 14843: java -Dserver.port=8080 -Xmx10240m -Xms10240m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs/ -Dspring.profiles.active=test -DLOG_PATH=/app/logs/ -DLOG_ROOT=/app/logs/ -XX:ErrorFile=/app/logs/hs_err_pid%p.log -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8786 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djute.maxbuffer=104857600 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8151 -jar /opt/production/webapp/sear Address Kbytes RSS Dirty Mode Mapping ffffffffff600000 4 0 0 r-x-- [ anon ] 000055cfa2e81000 4 4 0 r-x-- java 000055cfa3081000 4 4 4 r---- java 000055cfa3082000 4 4 4 rw--- java 00007f1d98062000 32 4 4 rw--- [ anon ] 00007f1e18c4e000 4 4 4 rw--- libsunec.so 00007f1e21e0d000 4 4 4 r---- libbz2.so.1.0.6 00007f1e21e0e000 4 4 4 rw--- libbz2.so.1.0.6 00007f1e22033000 4 4 4 r---- liblzma.so.5.2.2 00007f1e22034000 4 4 4 rw--- liblzma.so.5.2.2 00007f1e2224b000 4 4 4 r---- libelf-0.176.so 00007f1e2224c000 4 4 4 rw--- libelf-0.176.so 00007f1e22450000 4 4 4 r---- libattr.so.1.1.0 00007f1e22451000 4 4 4 rw--- libattr.so.1.1.0 00007f1e226a2000 4 4 4 rw--- libdw-0.176.so 00007f1e228a6000 4 4 4 r---- libcap.so.2.22 00007f1e228a7000 4 4 4 rw--- libcap.so.2.22 00007f1e22abc000 4 4 4 rw--- libnss_myhostname.so.2 00007f1e36db2000 4 4 4 r---- libresolv-2.17.so 00007f1e36db3000 4 4 4 rw--- libresolv-2.17.so 00007f1e36fbb000 4 4 4 r---- libnss_dns-2.17.so 00007f1e36fbc000 4 4 4 rw--- libnss_dns-2.17.so 00007f1e371d4000 4 4 4 r---- libnet.so 00007f1e371d5000 4 4 4 rw--- libnet.so 00007f1e373e7000 4 4 4 r---- libnio.so 00007f1e373e8000 4 4 4 rw--- libnio.so 00007f1e375f1000 4 4 4 r---- libmanagement.so 00007f1e375f2000 4 4 4 rw--- libmanagement.so 00007f1e37dfc000 4 4 4 r---- libdt_socket.so 00007f1e37dfd000 4 4 4 rw--- libdt_socket.so 00007f1e5808f000 4 4 4 rw--- [ anon ] 00007f1e5b281000 4 4 4 r---- libzip.so 00007f1e5b282000 4 4 4 rw--- libzip.so 00007f1e5b48e000 4 4 4 r---- libnss_files-2.17.so 00007f1e5b48f000 4 4 4 rw--- libnss_files-2.17.so 00007f1e5b698000 4 4 4 r---- libnpt.so 00007f1e5b699000 4 4 4 rw--- libnpt.so 00007f1e5b8d5000 4 4 4 r---- libjdwp.so 00007f1e5b8d6000 4 4 4 rw--- libjdwp.so 00007f1e5bb00000 4 4 4 r---- libjava.so 00007f1e5bd11000 4 4 4 rw--- libverify.so 00007f1e5bf18000 4 4 4 r---- librt-2.17.so 00007f1e5bf19000 4 4 4 rw--- librt-2.17.so 00007f1e5c12e000 4 4 4 r---- libgcc_s-4.8.5-20150702.so.1 00007f1e5c12f000 4 4 4 rw--- libgcc_s-4.8.5-20150702.so.1 00007f1e5c430000 4 4 4 r---- libm-2.17.so 00007f1e5c431000 4 4 4 rw--- libm-2.17.so 00007f1e5ddbc000 4 4 4 r---- libdl-2.17.so 00007f1e5ddbd000 4 4 4 rw--- libdl-2.17.so 00007f1e5dfcb000 4 4 4 r---- libjli.so 00007f1e5dfcc000 4 4 4 rw--- libjli.so 00007f1e5e1e1000 4 4 4 r---- libz.so.1.2.7 00007f1e5e1e2000 4 4 4 rw--- libz.so.1.2.7 00007f1e5e3f9000 4 4 4 r---- libpthread-2.17.so 00007f1e5e3fa000 4 4 4 rw--- libpthread-2.17.so 00007f1e5e3fb000 16 4 4 rw--- [ anon ] 00007f1e5e421000 4 4 0 r--s- sunec.jar 00007f1e5e61f000 4 4 4 rw--- [ anon ] 00007f1e5e620000 4 4 4 r---- ld-2.17.so 00007f1e5e621000 4 4 4 rw--- ld-2.17.so 00007f1e5e622000 4 4 4 rw--- [ anon ] 00007f1d94b66000 8192 8 8 rw--- [ anon ] 00007f1d95367000 8192 8 8 rw--- [ anon ] 00007f1d95b68000 8192 8 8 rw--- [ anon ] 00007f1d98060000 8 8 8 rw--- libasyncProfiler.so 00007f1e215fc000 1024 8 8 rw--- [ anon ] 00007f1e226a0000 8 8 8 r---- libdw-0.176.so 00007f1e375f6000 1016 8 8 rw--- [ anon ] 00007f1e379fa000 1016 8 8 rw--- [ anon ] 00007f1e37afb000 1016 8 8 rw--- [ anon ] 00007f1e580e1000 8 8 0 r--s- jce.jar 00007f1e5b496000 8 8 0 r-x-- libnpt.so 00007f1e5bb01000 8 8 8 rw--- libjava.so 00007f1e5bd0f000 8 8 8 r---- libverify.so 00007f1e5c723000 8 8 8 rw--- libstdc++.so.6.0.19 00007f1e5ca33000 8 8 8 rwx-- libjvm.so 00007f1e5dbb3000 8 8 8 rw--- libc-2.17.so 00007f1e5dbba000 8 8 0 r-x-- libdl-2.17.so 00007f1e5e61c000 8 8 8 rw--- [ anon ] 00007ffd6c183000 8 8 0 r-x-- [ anon ] 00007f1e21bff000 60 12 0 r-x-- libbz2.so.1.0.6 00007f1e2224d000 16 12 0 r-x-- libattr.so.1.1.0 00007f1e226a3000 16 12 0 r-x-- libcap.so.2.22 00007f1e22ab9000 12 12 12 r---- libnss_myhostname.so.2 00007f1e58760000 1024 12 12 rw--- [ anon ] 00007f1e58861000 1024 12 12 rw--- [ anon ] 00007f1e58962000 1024 12 12 rw--- [ anon ] 00007f1e18c4a000 16 16 16 r---- libsunec.so 00007f1e37bf9000 16 16 0 r-x-- libdt_socket.so 00007f1e5c725000 84 16 16 rw--- [ anon ] 00007f1e5dbaf000 16 16 16 r---- libc-2.17.so 00007f1d9936f000 8192 20 20 rw--- [ anon ] 00007f1e36db6000 24 20 0 r-x-- libnss_dns-2.17.so 00007f1e5bd12000 28 20 0 r-x-- librt-2.17.so 00007f1e5dbb5000 20 20 20 rw--- [ anon ] 00007f1e5e422000 20 20 0 r--s- charsets.jar 00007f1d9806d000 1016 24 24 rw--- [ anon ] 00007f1d99c5e000 1016 24 24 rw--- [ anon ] 00007f1d99d5f000 1016 24 24 rw--- [ anon ] 00007f1da137f000 8192 24 24 rw--- [ anon ] 00007f1e580db000 24 24 0 r--s- sunjce_provider.jar 00007f1e5bf1a000 84 24 0 r-x-- libgcc_s-4.8.5-20150702.so.1 00007f1e5e616000 24 24 0 r--s- jfr.jar 00007f1da0b7e000 8192 28 28 rw--- [ anon ] 00007f1da25a4000 280 28 28 rw--- [ anon ] 00007f1e22035000 92 28 0 r-x-- libelf-0.176.so 00007f1d9816e000 1016 32 32 rw--- [ anon ] 00007f1e377f9000 1012 32 32 rw--- [ anon ] 00007f1e378fa000 1012 32 32 rw--- [ anon ] 00007f1e5b07a000 32 32 0 r-x-- libzip.so 00007f1e5c71b000 32 32 32 r---- libstdc++.so.6.0.19 00007f1e5e508000 32 32 16 rw-s- 14843 00007f1dd0000000 132 36 36 rw--- [ anon ] 00007f1e373e9000 36 36 0 r-x-- libmanagement.so 00007f1e5b283000 48 36 0 r-x-- libnss_files-2.17.so 00007ffd6c022000 132 36 36 rw--- [ stack ] 00007f1e21e0f000 148 40 0 r-x-- liblzma.so.5.2.2 00007f1da2599000 44 44 44 rw--- librocksdbjni1412943798420921933.so 00007f1e18a23000 160 44 0 r-x-- libsunec.so 00007f1e376f8000 1012 44 44 rw--- [ anon ] 00007f1e5e427000 44 44 0 r--s- localedata.jar 00007f1e4dabd000 103692 48 0 r---- locale-archive 00007f1e5bb03000 52 52 0 r-x-- libverify.so 00007f1e5ddbe000 56 56 0 r-x-- libjli.so 00007f1e5dfcd000 84 56 0 r-x-- libz.so.1.2.7 00007f1e5e45e000 56 56 0 r--s- search-vault.jar 00007f1e228a8000 72 60 0 r-x-- libnss_myhostname.so.2 00007f1e36b9c000 88 68 0 r-x-- libresolv-2.17.so 00007f1e5e44d000 68 68 0 r--s- jsse.jar 00007f1e371d6000 72 72 0 r-x-- libnio.so 00007f1e580b7000 72 72 72 rw--- [ anon ] 00007f1e580c9000 72 72 0 r--s- resources.jar 00007f1e22452000 312 84 0 r-x-- libdw-0.176.so 00007f1d9a668000 1016 88 88 rw--- [ anon ] 00007f1da2583000 88 88 88 r---- librocksdbjni1412943798420921933.so 00007f1da25ed000 1016 88 88 rw--- [ anon ] 00007f1da2af0000 1016 88 88 rw--- [ anon ] 00007f1da2df3000 1016 88 88 rw--- [ anon ] 00007f1da38fe000 1016 88 88 rw--- [ anon ] 00007f1e18222000 1016 88 88 rw--- [ anon ] 00007f1e19055000 1016 88 88 rw--- [ anon ] 00007f1e19e5b000 1016 88 88 rw--- [ anon ] 00007f1e19f5c000 1016 88 88 rw--- [ anon ] 00007f1e1a05d000 1016 88 88 rw--- [ anon ] 00007f1e1a15e000 1016 88 88 rw--- [ anon ] 00007f1e1a25f000 1016 88 88 rw--- [ anon ] 00007f1e1a360000 1016 88 88 rw--- [ anon ] 00007f1e1a461000 1016 88 88 rw--- [ anon ] 00007f1e1a562000 1016 88 88 rw--- [ anon ] 00007f1e1a663000 1016 88 88 rw--- [ anon ] 00007f1e21a00000 1016 88 88 rw--- [ anon ] 00007f1e21b01000 1016 88 88 rw--- [ anon ] 00007f1e37f02000 1016 88 88 rw--- [ anon ] 00007f1e3c0b2000 1016 88 88 rw--- [ anon ] 00007f1e5e1e3000 92 88 0 r-x-- libpthread-2.17.so 00007f1d9da73000 1016 92 92 rw--- [ anon ] 00007f1da26ee000 1016 92 92 rw--- [ anon ] 00007f1da2cf2000 1016 92 92 rw--- [ anon ] 00007f1da39ff000 1016 92 92 rw--- [ anon ] 00007f1e18f54000 1016 92 92 rw--- [ anon ] 00007f1e19257000 1016 92 92 rw--- [ anon ] 00007f1e37e01000 1016 92 92 rw--- [ anon ] 00007f1d99e60000 1016 96 96 rw--- [ anon ] 00007f1d99f61000 1016 96 96 rw--- [ anon ] 00007f1d9a062000 1016 96 96 rw--- [ anon ] 00007f1d9a163000 1016 96 96 rw--- [ anon ] 00007f1d9a264000 1016 96 96 rw--- [ anon ] 00007f1d9a365000 1016 96 96 rw--- [ anon ] 00007f1d9a466000 1016 96 96 rw--- [ anon ] 00007f1d9a567000 1016 96 96 rw--- [ anon ] 00007f1d9a86a000 1016 96 96 rw--- [ anon ] 00007f1d9a96b000 1016 96 96 rw--- [ anon ] 00007f1d9aa6c000 1016 96 96 rw--- [ anon ] 00007f1d9ab6d000 1016 96 96 rw--- [ anon ] 00007f1d9ac6e000 1016 96 96 rw--- [ anon ] 00007f1d9ad6f000 1016 96 96 rw--- [ anon ] 00007f1d9ae70000 1016 96 96 rw--- [ anon ] 00007f1d9af71000 1016 96 96 rw--- [ anon ] 00007f1d9b072000 1016 96 96 rw--- [ anon ] 00007f1d9b173000 1016 96 96 rw--- [ anon ] 00007f1d9ca6b000 1016 96 96 rw--- [ anon ] 00007f1d9ce6d000 1016 96 96 rw--- [ anon ] 00007f1d9cf6e000 1016 96 96 rw--- [ anon ] 00007f1d9d06f000 1016 96 96 rw--- [ anon ] 00007f1d9d170000 1016 96 96 rw--- [ anon ] 00007f1d9dc75000 1016 96 96 rw--- [ anon ] 00007f1da3f02000 1016 96 96 rw--- [ anon ] 00007f1e18e53000 1016 96 96 rw--- [ anon ] 00007f1e1adfd000 1016 96 96 rw--- [ anon ] 00007f1e36fbd000 96 96 0 r-x-- libnet.so 00007f1da3e01000 1016 100 100 rw--- [ anon ] 00007f1e19156000 1016 100 100 rw--- [ anon ] 00007f1e1ba01000 1016 100 100 rw--- [ anon ] 00007f1d9d271000 1016 104 104 rw--- [ anon ] 00007f1d9dd76000 1016 104 104 rw--- [ anon ] 00007f1da2bf1000 1016 104 104 rw--- [ anon ] 00007f1e18323000 1016 104 104 rw--- [ anon ] 00007f1e19d5a000 1016 104 104 rw--- [ anon ] 00007f1d9db74000 1016 108 108 rw--- [ anon ] 00007f1da0a7f000 1016 108 108 rw--- [ anon ] 00007f1da35fb000 1016 108 108 rw--- [ anon ] 00007f1e18424000 1016 108 108 rw--- [ anon ] 00007f1e19c59000 1016 108 108 rw--- [ anon ] 00007f1e1b7ff000 1016 108 108 rw--- [ anon ] 00007f1e1b900000 1016 108 108 rw--- [ anon ] 00007f1e580e3000 108 108 0 r--s- cldrdata.jar 00007f1e5e432000 108 108 0 r--s- nashorn.jar 00007f1d9a769000 1016 112 112 rw--- [ anon ] 00007f1da087d000 1016 112 112 rw--- [ anon ] 00007f1da097e000 1016 112 112 rw--- [ anon ] 00007f1da30f6000 1016 112 112 rw--- [ anon ] 00007f1e1a764000 1016 112 112 rw--- [ anon ] 00007f1da047b000 1016 116 116 rw--- [ anon ] 00007f1da2ef4000 1016 116 116 rw--- [ anon ] 00007f1da33f9000 1016 116 116 rw--- [ anon ] 00007f1da37fd000 1016 116 116 rw--- [ anon ] 00007f1da34fa000 1016 120 120 rw--- [ anon ] 00007f1da36fc000 1016 120 120 rw--- [ anon ] 00007f1d9f477000 16388 124 124 rw--- [ anon ] 00007f1da2ff5000 1016 124 124 rw--- [ anon ] 00007f1da32f8000 1016 128 128 rw--- [ anon ] 00007f1e5c130000 1028 128 0 r-x-- libm-2.17.so 00007f1e5e3ff000 136 128 0 r-x-- ld-2.17.so 00007f1da31f7000 1016 148 148 rw--- [ anon ] 00007f1dc4000000 172 148 148 rw--- [ anon ] 00007f1e5b8d7000 168 148 0 r-x-- libjava.so 00007f1d9826f000 17404 156 156 rw--- [ anon ] 00007f1e5d78b000 172 172 172 rw--- libjvm.so 00007f1e5b69a000 236 180 0 r-x-- libjdwp.so 00007f1e5d7b6000 216 208 208 rw--- [ anon ] 00007f1e5e514000 1032 212 212 rw--- [ anon ] 00007f1d97e18000 288 264 0 r-x-- libasyncProfiler.so 00007f1e580fe000 3396 324 324 rw--- [ anon ] 00007f1de0000000 420 340 340 rw--- [ anon ] 00007f1e58621000 1272 484 484 rw--- [ anon ] 00007f1e04000000 580 500 500 rw--- [ anon ] 00007f1dc0000000 620 508 508 rw--- [ anon ] 00007f1dfc000000 620 596 596 rw--- [ anon ] 00007f1e5e46c000 624 624 624 rw--- [ anon ] 00007f1e00000000 668 660 660 rw--- [ anon ] 00007f1e5c432000 932 672 0 r-x-- libstdc++.so.6.0.19 00007f1e5d6dd000 696 696 696 r---- libjvm.so 00007f1df4000000 796 708 708 rw--- [ anon ] 00007f1e08000000 796 728 728 rw--- [ anon ] 00007f1e5d7ec000 1808 960 0 r-x-- libc-2.17.so 00007f1db0000000 1224 1188 1188 rw--- [ anon ] 00007f1db8000000 1356 1232 1232 rw--- [ anon ] 00007f1ddc000000 1344 1312 1312 rw--- [ anon ] 00007f1dc8000000 1392 1392 1392 rw--- [ anon ] 00007f1e5844f000 1864 1864 0 r--s- rt.jar 00007f1d9b274000 3064 1896 1896 rw--- [ anon ] 00007f1e18823000 2048 2040 2040 rw--- [ anon ] 00007f1e18c4f000 2052 2044 2044 rw--- [ anon ] 00007f1d9c773000 2048 2048 2048 rw--- [ anon ] 00007f1d9d670000 2048 2048 2048 rw--- [ anon ] 00007f1d9d870000 2048 2048 2048 rw--- [ anon ] 00007f1e1801f000 2048 2048 2048 rw--- [ anon ] 00007f1e19656000 2048 2048 2048 rw--- [ anon ] 00007f1e19856000 2048 2048 2048 rw--- [ anon ] 00007f1e19a56000 2048 2048 2048 rw--- [ anon ] 00007f1e1ab63000 2048 2048 2048 rw--- [ anon ] 00007f1e1b1fc000 2048 2048 2048 rw--- [ anon ] 00007f1e1b3fc000 2048 2048 2048 rw--- [ anon ] 00007f1e1b5fc000 2048 2048 2048 rw--- [ anon ] 00007f1e1be00000 2048 2048 2048 rw--- [ anon ] 00007f1e200f8000 2048 2048 2048 rw--- [ anon ] 00007f1e202f8000 2048 2048 2048 rw--- [ anon ] 00007f1e204f8000 2048 2048 2048 rw--- [ anon ] 00007f1e206f8000 2048 2048 2048 rw--- [ anon ] 00007f1e20efa000 2048 2048 2048 rw--- [ anon ] 00007f1e213fb000 2048 2048 2048 rw--- [ anon ] 00007f1e1bb02000 3024 2104 2104 rw--- [ anon ] 00007f1e216ff000 3064 2120 2120 rw--- [ anon ] 00007f1da27ef000 3064 2124 2124 rw--- [ anon ] 00007f1e19358000 3064 2136 2136 rw--- [ anon ] 00007f1e1a865000 3064 2136 2136 rw--- [ anon ] 00007f1e210fd000 3064 2136 2136 rw--- [ anon ] 00007f1e208fb000 3064 2140 2140 rw--- [ anon ] 00007f1e20bfc000 3064 2140 2140 rw--- [ anon ] 00007f1d9cb6c000 3064 2144 2144 rw--- [ anon ] 00007f1d9d372000 3064 2144 2144 rw--- [ anon ] 00007f1da3b00000 3064 2148 2148 rw--- [ anon ] 00007f1e1aefe000 3064 2152 2152 rw--- [ anon ] 00007f1e18525000 3064 2156 2156 rw--- [ anon ] 00007f1d9de77000 3064 2164 2164 rw--- [ anon ] 00007f1d9b572000 18436 2168 2168 rw--- [ anon ] 00007f1da057c000 3064 2172 2172 rw--- [ anon ] 00007f1d97417000 10244 2204 2204 rw--- [ anon ] 00007f1d9e178000 19452 2320 2320 rw--- [ anon ] 00007f1e14000000 2992 2376 2376 rw--- [ anon ] 00007f1dbc000000 2920 2916 2916 rw--- [ anon ] 00007f1e5c73a000 3044 2932 0 r-x-- libjvm.so 00007f1db4000000 4920 4432 4432 rw--- [ anon ] 00007f1d10000000 34124 4440 4440 rw--- [ anon ] 00007f1da1b7f000 8208 5208 0 r-x-- librocksdbjni1412943798420921933.so 00007f1e10000000 7584 7212 7212 rw--- [ anon ] 00007f1dd4000000 7744 7580 7580 rw--- [ anon ] 00007f1e5ca35000 10916 8320 0 r-x-- libjvm.so 00007f1e22abd000 327680 10400 10400 rw--- [ anon ] 00007f1d44000000 11796 11796 11796 rw--- [ anon ] 00007f1e3c1b1000 42032 12584 12584 rw--- [ anon ] 00007f1dcc000000 23936 21572 21572 rw--- [ anon ] 00007f1df0000000 21904 21736 21736 rw--- [ anon ] 00007f1dd8000000 24932 24740 24740 rw--- [ anon ] 00007f1da8000000 57296 27876 27876 rw--- [ anon ] 00007f1dec000000 32268 32256 32256 rw--- [ anon ] 00007f1e58a63000 35908 34896 34896 rw--- [ anon ] 00007f1df8000000 40312 40288 40288 rw--- [ anon ] 00007f1d34000000 65536 42716 42716 rw--- [ anon ] 00007f1d90000000 45060 45060 45060 rw--- [ anon ] 00007f1e3eabd000 47424 46880 46880 rwx-- [ anon ] 00007f1de8000000 61628 61484 61484 rw--- [ anon ] 00007f1e54000000 65532 63764 63764 rw--- [ anon ] 00007f1d00000000 65524 65524 65524 rw--- [ anon ] 00007f1d08000000 65524 65524 65524 rw--- [ anon ] 00007f1d5c000000 65524 65524 65524 rw--- [ anon ] 00007f1d6c000000 65524 65524 65524 rw--- [ anon ] 00007f1d70000000 65524 65524 65524 rw--- [ anon ] 00007f1d8c000000 65524 65524 65524 rw--- [ anon ] 00007f1e1c000000 65524 65524 65524 rw--- [ anon ] 00007f1e38000000 65524 65524 65524 rw--- [ anon ] 00007f1d14000000 65528 65528 65528 rw--- [ anon ] 00007f1d30000000 65528 65528 65528 rw--- [ anon ] 00007f1d38000000 65528 65528 65528 rw--- [ anon ] 00007f1d58000000 65528 65528 65528 rw--- [ anon ] 00007f1d74000000 65528 65528 65528 rw--- [ anon ] 00007f1de4000000 65528 65528 65528 rw--- [ anon ] 00007f1e0c000000 65528 65528 65528 rw--- [ anon ] 00007f1d0c000000 65532 65532 65532 rw--- [ anon ] 00007f1d28000000 65532 65532 65532 rw--- [ anon ] 00007f1d2c000000 65532 65532 65532 rw--- [ anon ] 00007f1d3c000000 65532 65532 65532 rw--- [ anon ] 00007f1d68000000 65532 65532 65532 rw--- [ anon ] 00007f1d88000000 65532 65532 65532 rw--- [ anon ] 00007f1d04000000 65536 65536 65536 rw--- [ anon ] 00007f1d40000000 65536 65536 65536 rw--- [ anon ] 00007f1da4000000 65536 65536 65536 rw--- [ anon ] 00007f1dac000000 65536 65536 65536 rw--- [ anon ] 00007f1d18000000 130716 65816 65816 rw--- [ anon ] 00007f1d60000000 131072 68820 68820 rw--- [ anon ] 00007f1cf8000000 97112 68900 68900 rw--- [ anon ] 00007f1d50000000 131060 131060 131060 rw--- [ anon ] 00007f1d20000000 131068 131068 131068 rw--- [ anon ] 00007f1d80000000 131068 131068 131068 rw--- [ anon ] 00007f1d48000000 131072 131072 131072 rw--- [ anon ] 00007f1d78000000 131072 131072 131072 rw--- [ anon ] 000055cfa3862000 688992 688884 688884 rw--- [ anon ] 0000000540000000 10497340 3667144 3667144 rw--- [ anon ] total kB 18060524 7505832 7483436 我这个堆外内存分配情况是什么
07-29
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值