linux下delete释放不了内存,new了以后,马上delete,但是用prstat, pmap查看,内存不减少,为什么?...

new了以后,马上delete,但是用prstat, pmap查看,内存不减少,为什么?

1、

void f()

{

char * p = new char[1024 * 1024 * 4]; //用prstat,pmap查看,内存增加了4M

sleep(5);

delete [] p;                          //delete完以后,但是用prstat,pmap查看,内存没有减少

}

2、

main()

{

while (1)

{

f ();   //这里虽然死循环,但是内存只涨了一次,4M,以后就没有关系了。

}

}

为什么?

3、

同样的程序我在windows下测试,就没有这个现象:new ---- +4M, delete -------- -4M

分不够再加,如果你在深圳,我请你吃饭

|

从这个case看,在没有调用new char的时候系统会分配1112k的地址空间,在调用

new char以后,new char会产生一个heap,地址空间大小是1032k。但是地址空间

不代表实际分配的内存,内存是有系统核心分配的,是动态的。而且在一个程序中

循环调用new char和多个并行进程调用new char是个不同的,也不是一个概念。

现在解释一下pmap -x的输出项的含义,

Address 就是一个进程不同段的地址空间。

Kbytes 就是每个段的地址空间的大小

Resident 表示在内存中驻留的段的空间

shared   表示这些北分配的内存是被系统中其他进程共享的。

private 表示只能被该进程使用的空间大小。你可以发现share的空间不具有

private的属性。

Prstat -LP 的输出的意义是:

size 就是该进程占用的地址空间。

RSS 实际被分配的内存的大小。

你看到的resident和RSS不同,是RSS是进程在内存中的实际的大小,这个数值最大

可以达到Resident显示数值。

|

这个...顶一下...

|

prstat, pmap不准?学习

|

会有一个滞后的。

|

up

|

估计是prstat, pmap有个采样时间间隔导致的

|

你试试new前加个getchar()

new完再加个getchar()

delete完再来个getchar()

这个你做完一步看过内存情况后再回到执行程序的地方按下回车,再去看内存情况,

看是否人家说的取样时间间隔的问题!

|

unix好像应该是这样的:

你new了,然后delete,这一快并没有真正释放,delete只是告诉编译器可以重新被使用,没有还给操作系统,所以

main()

{

while (1)

{

f ();   //内存只涨了一次,4M

}

}

等你整个程序exit出来后,这4M内存才释放。

|

linux 内存管理的机制问题,不是马上回收释放的内存,而是再适当的时候才回收

|

gz

|

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 Chapter 1 Installing the Solaris 10 Operating System 1 1.1 Methods to Meet Your Needs 1 1.2 The Basics of Solaris Installation 2 1.2.1 Installing Solaris on a SPARC System 6 1.2.2 Installing Solaris on an x86 System 9 1.3 Solaris JumpStart Installation 13 1.3.1 Setting up a JumpStart Server 13 1.3.2 Creating a Pro?le Server for Networked Systems 14 1.3.3 Performing a Custom JumpStart Installation 22 1.4 Upgrading a Solaris System 25 1.5 Solaris Live Upgrade 26 Chapter 2 Boot, Service Management, and Shutdown 33 2.1 Boot 33 2.1.1 The Bootloader 33 2.1.2 The Kernel 34 2.1.3 User-Mode Programs 34 2.1.4 GRUB Extensions 35 2.1.5 Modifying Boot Behavior 36 2.1.6 Run Levels 37 2.1.7 Troubleshooting 37 2.2 Service Management Facility 39 2.2.1 enabled 40 2.2.2 state, next_state, and state_time 40 2.2.3 logfile 41 2.2.4 dependency 41 2.2.5 How SMF Interacts with Service Implementations 42 2.2.6 The Service Con?guration Facility 44 2.2.7 Health and Troubleshooting 44 2.2.8 Service Manifests 45 2.2.9 Backup and Restore of SCF Data 45 2.3 Shutdown 46 2.3.1 Application-Speci?c Shutdown 46 2.3.2 Application-Independent Shutdown 46 Chapter 3 Software Management: Packages 47 3.1 Managing Software Packages 47 3.2 What Is a Package? 47 3.2.1 SVR4 Package Content 48 3.2.2 Package Naming Conventions 49 3.3 Tools for Managing Software Packages 49 3.4 Installing or Removing a Software Package with the pkgadd or pkgrm Command 50 3.5 Using Package Commands to Manage Software Packages 51 3.5.1 How to Install Packages with the pkgadd Command 51 3.5.2 Adding Frequently Installed Packages to a Spool Directory 54 3.5.3 Removing Software Packages 56 Chapter 4 Software Management: Patches 59 4.1 Managing Software with Patches 59 4.2 What Is a Patch? 59 4.2.1 Patch Content 60 4.2.2 Patch Numbering 61 4.3 Patch Management Best Practices 61 4.3.1 Proactive Patch Management Strategy 62 4.3.2 Reactive Patch Management Strategy 68 4.3.3 Security Patch Management Strategy 70 4.3.4 Proactive Patching When Installing a New System 71 4.3.5 Identifying Patches for Proactive Patching and Accessing Patches 73 4.4 Example of Using Solaris Live Upgrade to Install Patches 75 4.4.1 Overview of Patching with Solaris Live Upgrade 75 4.4.2 Planning for Using Solaris Live Upgrade 77 4.4.3 How to Apply a Patch When Using Solaris Live Upgrade for the Solaris 10 8/07 Release 79 4.5 Patch Automation Tools 86 4.6 Overview of Patch Types 88 4.7 Patch README Special Instructions 93 4.7.1 When to Patch in Single-User Mode 93 4.7.2 When to Reboot After Applying or Removing a Patch 94 4.7.3 Patch Metadata for Non-Global Zones 95 4.8 Patch Dependencies (Interrelationships) 96 4.8.1 SUNW_REQUIRES Field for Patch Dependencies 96 4.8.2 SUNW_OBSOLETES Field for Patch Accumulation and Obsolescence 97 4.8.3 SUNW_INCOMPAT Field for Incompatibility 97 Chapter 5 Solaris File Systems 99 5.1 Solaris File System Overview 99 5.1.1 Mounting File Systems 100 5.1.2 Unmounting File Systems 102 5.1.3 Using the /etc/vfstab File 103 5.1.4 Determining a File System Type 104 5.1.5 Monitoring File Systems 105 5.2 UFS File Systems 105 5.2.1 Creating a UFS File System 106 5.2.2 Backing Up and Restoring UFS File Systems 107 5.2.3 Using Quotas to Manage Disk Space 108 5.2.4 Checking File System Integrity 110 5.2.5 Using Access Control Lists 112 5.2.6 Using UFS Logging 113 5.2.7 Using Extended File Attributes 115 5.2.8 Using Multiterabyte UFS File Systems 115 5.2.9 Creating UFS Snapshots 115 5.3 ZFS File System Administration 117 5.3.1 Using Pools and File Systems 118 5.3.2 Backing Up a ZFS File System 120 5.3.3 Using Mirroring and Striping 121 5.3.4 Using RAID-Z 122 5.3.5 Using Copy-on-Write and Snapshots 122 5.3.6 Using File Compression 124 5.3.7 Measuring Performance 124 5.3.8 Expanding a Pool 125 5.3.9 Checking a Pool 126 5.3.10 Replacing a Disk 127 5.4 NFS File System Administration 127 5.4.1 Finding Available NFS File Systems 128 5.4.2 Mounting an NFS File System 129 5.4.3 Unmounting an NFS File System 129 5.4.4 Con?guring Automatic File System Sharing 130 5.4.5 Automounting File Systems 130 5.5 Removable Media 133 5.5.1 Using the PCFS File System 135 5.5.2 Using the HSFS File System 136 5.6 Pseudo File System Administration 136 5.6.1 Using Swap Space 136 5.6.2 Using the TMPFS File System 138 5.6.3 Using the Loopback File System 139 Chapter 6 Managing System Processes 141 6.1 Overview 141 6.1.1 State of a Process 143 6.1.2 Process Context 143 6.2 Monitoring the Processes 145 6.2.1 Process Status: ps 146 6.2.2 Grepping for Process: pgrep 149 6.2.3 Process Statistics Summary: prstat 149 6.2.4 Reap a Zombie Process: preap 151 6.2.5 Temporarily Stop a Process: pstop 152 6.2.6 Resuming a Suspended Process: prun 152 6.2.7 Wait for Process Completion: pwait 152 6.2.8 Process Working Directory: pwdx 152 6.2.9 Process Arguments: pargs 152 6.2.10 Process File Table: pfiles 153 6.2.11 Process Libraries: pldd 154 6.2.12 Process Tree: ptree 154 6.2.13 Process Stack: pstack 155 6.2.14 Tracing Process: truss 156 6.3 Controlling the Processes 158 6.3.1 The nice and renice Commands 158 6.3.2 Signals 159 6.4 Process Manager 164 6.5 Scheduling Processes 170 6.5.1 cron Utility 171 6.5.2 The at Command 175 Chapter 7 Fault Management 179 7.1 Overview 179 7.2 Fault Noti?cation 181 7.3 Displaying Faults 182 7.4 Repairing Faults 184 7.5 Managing Fault Management Log Files 184 7.5.1 Automatic Log Rotation 185 7.5.2 Manual Log Rotation 186 7.5.3 Log Rotation Failures 187 7.5.4 Examining Historical Log Files 188 7.6 Managing fmd and fmd Modules 188 7.6.1 Loading and Unloading Modules 189 7.6.2 fmd Statistics 191 7.6.3 Con?guration Files 192 7.7 Fault Management Directories 193 7.8 Solaris Fault Management Downloadable Resources 193 7.8.1 Solaris FMA Demo Kit 193 7.8.2 Events Registry 194 Chapter 8 Managing Disks 197 8.1 Hard Disk Drive 197 8.2 Disk Terminology 199 8.3 Disk Device Naming Conventions 200 8.3.1 Specifying the Disk Subdirectory in Commands 202 8.4 Overview of Disk Management 202 8.4.1 Device Driver 202 8.4.2 Disk Labels (VTOC or EFI) 203 8.4.3 Disk Slices 205 8.4.4 Slice Arrangements on Multiple Disks 207 8.4.5 Partition Table 208 8.4.6 format Utility 210 8.4.7 format Menu and Command Descriptions 211 8.4.8 Partition Menu 213 8.4.9 x86: fdisk Menu 214 8.4.10 Analyze Menu 215 8.4.11 Defect Menu 217 8.5 Disk Management Procedures 217 8.5.1 How to Identify the Disks on a System 218 8.5.2 How to Determine If a Disk Is Formatted 218 8.5.3 How to Format a Disk 219 8.5.4 How to Identify a Defective Sector by Performing a Surface Analysis 221 8.5.5 How to Repair a Defective Sector 222 8.5.6 How to Display the Partition Table or Slice Information 223 8.5.7 Creating Disk Slices (Partitioning a Disk) and Labeling a Disk 224 8.5.8 Creating a File System On a Disk 228 8.5.9 Additional Commands to Manage Disks 229 Chapter 9 Managing Devices 235 9.1 Solaris Device Driver Introduction 235 9.2 Analyzing Lack of Device Support 236 9.2.1 Device Does Not Work 236 9.2.2 Obtaining Information About Devices 236 9.2.3 Obtaining Information About Drivers 241 9.2.4 Does the Device Have a Driver? 248 9.2.5 Current Driver Does Not Work 250 9.2.6 Can a Driver for a Similar Device Work? 250 9.3 Installing and Updating Drivers 251 9.3.1 Backing Up Current Functioning Driver Binaries 251 9.3.2 Package Installations 252 9.3.3 Install Time Updates 252 9.3.4 Manual Driver Binary Installation 253 9.3.5 Adding a Device Driver to a Net Installation Image 256 9.3.6 Adding a Device Driver to a CD/DVD Installation Image 262 9.3.7 Swapping Disks 263 9.4 When Drivers Hang or Panic the System 266 9.4.1 Device Driver Causes the System to Hang 266 9.4.2 Device Driver Causes the System to Panic 268 9.4.3 Device Driver Degrades System Performance 269 9.5 Driver Administration Commands and Files 270 9.5.1 Driver Administration Command Summary 270 9.5.2 Driver Administration File Summary 272 Chapter 10 Solaris Networking 275 10.1 Introduction to Network Con?guration 275 10.1.1 Overview of the TCP/IP Networking Stack 275 10.1.2 Con?guring the Network as Superuser 277 10.2 Setting Up a Network 277 10.2.1 Components of the XYZ, Inc. Network 277 10.2.2 Con?guring the Sales Domain 280 10.2.3 Con?guring the Accounting Domain 283 10.2.4 Con?guring the Multihomed Host 288 10.2.5 Setting Up a System for Static Routing 296 10.2.6 Con?guring the Corporate Domain 300 10.2.7 Testing the Network Con?guration 302 10.3 Monitoring Network Performance 304 10.3.1 dladm Command 304 10.3.2 ifconfig Command 305 10.3.3 netstat Command 305 10.3.4 snoop Command 307 10.3.5 traceroute Command 308 Chapter 11 Solaris User Management 309 11.1 Solaris Users, Groups, and Roles 309 11.1.1 File System Object Permissions 310 11.1.2 User Account Components 312 11.1.3 User Management Tools 313 11.1.4 User Management Files 313 11.2 Managing Users and Groups 314 11.2.1 Starting the Solaris Management Console 314 11.2.2 Adding a Group and a User to Local Files 315 11.2.3 Adding a Group and a User to an NIS Domain 317 11.3 Managing Roles 318 11.3.1 Changing root from a User to a Role 318 11.3.2 Viewing the List of Roles 319 11.3.3 Assigning a Role to a Local User 319 Chapter 12 Solaris Zones 321 12.1 Overview 321 12.2 How Zones Work 323 12.3 Branded Zones 324 12.4 Network Interfaces in Zones 324 12.5 Devices in Zones 325 12.6 Packages and Patches in a Zones Environment 325 12.7 Administering Zones 326 12.7.1 Zone Con?guration 327 12.7.2 Viewing a Zone Con?guration 331 12.7.3 Zone Installation and Booting 331 12.7.4 Zone Login Using the zlogin Command 332 12.8 Halting, Uninstalling, Moving, and Cloning Zones 333 12.9 Migrating a Zone to a New System 334 12.10 Deleting a Zone 336 12.11 Listing the Zones on a System 336 12.12 Zones Usage Examples 337 12.12.1 Adding a Dedicated Device to a Non-Global Zone 337 12.12.2 How to Export Home Directories in the Global Zone into a Non-Global Zone 337 12.12.3 Altering Privileges in a Non-Global Zone 337 12.12.4 Checking the Status of SMF Services 338 12.12.5 Modifying CPU, Swap, and Locked Memory Caps in Zones 338 12.12.6 Using the Dtrace Program in a Non-Global Zone 339 Chapter 13 Using Naming Services 341 13.1 Using Naming Services (DNS, NIS, AND LDAP) 341 13.1.1 Naming Service Cache Daemon (nscd) 342 13.1.2 DNS Naming Services 342 13.1.3 NIS Naming Services 342 13.1.4 LDAP Naming Services 343 13.1.5 Organizational Use of Naming Services 343 13.1.6 Network Database Sources 344 13.2 Name Service Switch File 347 13.2.1 Con?guring the Name Service Switch File 347 13.2.2 Database Status and Actions 349 13.3 DNS Setup and Con?guration 350 13.3.1 Resolver Files 350 13.3.2 Steps DNS Clients Use to Resolve Names 350 13.4 NIS Setup and Con?guration 351 13.4.1 Setting Up NIS Clients 351 13.4.2 Working with NIS Maps 352 13.5 LDAP Setup and Con?guration 356 13.5.1 Initializing a Client Using Per-User Credentials 357 13.5.2 Con?guring an LDAP Client 359 13.5.3 Using Pro?les to Initialize an LDAP Client 362 13.5.4 Using Proxy Credentials to Initialize an LDAP Client 362 13.5.5 Initializing an LDAP Client Manually 363 13.5.6 Modifying a Manual LDAP Client Con?guration 363 13.5.7 Troubleshooting LDAP Client Con?guration 364 13.5.8 Uninitializing an LDAP Client 364 13.5.9 Initializing the Native LDAP Client 364 13.5.10 LDAP API Entry Listings 368 13.5.11 Troubleshooting Name Service Information 368 Chapter 14 Solaris Print Administration 369 14.1 Overview of the Solaris Printing Architecture 369 14.2 Key Concepts 370 14.2.1 Printer Categories (Local and Remote Printers) 370 14.2.2 Printer Connections (Directly Attached and Network Attached) 370 14.2.3 Description of a Print Server and a Print Client 371 14.3 Solaris Printing Tools and Services 371 14.3.1 Solaris Print Manager 371 14.3.2 LP Print Service 371 14.3.3 PostScript Printer De?nitions File Manager 372 14.4 Network Protocols 372 14.4.1 Berkeley Software Distribution Protocol 372 14.4.2 Transmission Control Protocol 372 14.4.3 Internet Printing Protocol 373 14.4.4 Server Message Block Protocol 373 14. 5 Planning for Printer Setup 373 14. 5.1 Print Server Requirements 373 14. 5.2 Locating Information About Supported Printers 374 14. 5.3 Locating Information About Available PPD Files 375 14. 5.4 Adding a New PPD File to the System 375 14. 5.5 Adding Printers in a Naming Service 377 14. 5.6 Printer Support in the Naming Service Switch 377 14. 5.7 Enabling Network Listening Services 378 14.6 Setting Up Printers with Solaris Printer Manager 379 14.6.1 Assigning Printer De?nitions 379 14.6.2 Starting Solaris Print Manager 380 14.6.3 Setting Up a New Directly Attached Printer With Solaris Print Manager 381 14.6.4 Setting Up a New Network-Attached Printer with Solaris Print Manager 381 14.7 Setting Up a Printer on a Print Client with Solaris Print Manager 385 14.7.1 Adding Printer Access With Solaris Print Manager 385 14.8 Administering Printers by Using LP Print Commands 385 14.8.1 Frequently Used LP Print Commands 386 14.8.2 Using the lpstat Command 386 14.8.3 Disabling and Enabling Printers 387 14.8.4 Accepting or Rejecting Print Requests 387 14.8.5 Canceling a Print Request 388 14.8.6 Moving Print Requests from One Printer to Another Printer 389 14.8.7 Deleting a Printer 390 14.9 Troubleshooting Printing Problems 392 14.9.1 Troubleshooting No Output (Nothing Prints) 392 14.9.2 Checking That the Print Scheduler Is Running 393 14.9.3 Debugging Printing Problems 393 14.9.4 Checking the Printer Network Connections 394 Index 395

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值